En quoi Linux est-il différent d'UNIX et qu'est-ce qu'un système d'exploitation de type UNIX ? En quoi Unix diffère de Linux

Ce système a résisté à l'épreuve du temps et a survécu.

En relation avec ce système, un système de normes a été développé :

POSIX 1003.1-1988, 1990 - Les appels système UNIX (points d'entrée) sont décrits

(Interface de programmation d'applications - API)

POSIX 1003.2-1992 - définit l'interpréteur de commandes et l'ensemble des utilitaires UNIX OS

POSIX 1003.1b-1993 - Suppléments relatifs aux applications temps réel

X / OPEN - le groupe coordonnant le développement de standards pour le système d'exploitation UNIX

Caractéristiques distinctives d'unix os

    Le système est écrit dans un langage de haut niveau (C), ce qui le rend accessible à la compréhension, à la modification et à la portabilité vers d'autres plates-formes matérielles. UNIX est l'un des systèmes les plus ouverts.

    UNIX est un système multitâche et multi-utilisateurs avec une large gamme de services. Un serveur peut servir les demandes d'un grand nombre d'utilisateurs. Dans ce cas, vous n'avez besoin d'administrer qu'un seul système utilisateur.

    Disponibilité des normes. Malgré la variété des versions, la base de toute la famille UNIX est fondamentalement la même architecture et un certain nombre d'interfaces standard, ce qui simplifie la transition des utilisateurs d'un système à un autre.

    Interface utilisateur modulaire simple mais puissante. Il existe un certain ensemble d'utilitaires, dont chacun résout un problème hautement spécialisé, et à partir d'eux, il est possible de construire des complexes de traitement logiciel complexes.

    L'utilisation d'un système de fichiers hiérarchique unique et facile à gérer qui permet d'accéder aux données stockées dans des fichiers sur disque et aux périphériques informatiques via une interface de système de fichiers unifiée.

    Un assez grand nombre d'applications, y compris des freewares.

Les bases de l'architecture du système d'exploitation unix Le modèle du système unix.

Structure du noyau Unix.

UNIX est un modèle de système à deux niveaux : noyau et applications.

Le noyau interagit directement avec le matériel de l'ordinateur, isolant les programmes d'application des fonctionnalités matérielles du système informatique.

Le noyau a un ensemble de services fournis programmes d'application... Ceux-ci incluent les opérations d'E/S, les processus de génération et de gestion, les interactions entre les processus, les signaux, etc.

Toutes les applications demandent des services de noyau via un système d'appel.

Le deuxième niveau se compose d'applications ou de tâches, à la fois celles du système, qui définissent la fonctionnalité générale du système, et les applications, qui fournissent l'interface utilisateur UNIX. Le schéma d'interaction de toutes les applications avec le noyau est le même.

Coeur fournit les fonctionnalités de base du système d'exploitation, crée et gère des processus, alloue de la mémoire et permet d'accéder aux fichiers et aux périphériques. L'interaction des applications avec le noyau se produit via l'interface d'appel système standard. L'interface d'appel système est un ensemble de services de base et définit le format de la demande de service.

Un processus demande le service d'une procédure particulière via un appel système standardisé qui ressemble à un appel de fonction de bibliothèque C normal. Le noyau traite la requête au nom du processus et renvoie les données nécessaires au processus.

Le noyau se compose de trois sous-systèmes principaux :

1) sous-système de fichiers ;

2) sous-système d'entrée-sortie ;

3) un sous-système de gestion des processus et de la mémoire.

Sous-système de fichiers fournit une interface unifiée pour accéder aux données situées sur les lecteurs de disque et les périphériques. Les mêmes fonctions de lecture / écriture peuvent être utilisées lorsque vous travaillez avec des fichiers sur des disques et lorsque des données d'E / S vers un terminal, une imprimante et autres. périphériques externes.

Le sous-système de fichiers contrôle les droits d'accès aux fichiers, effectue des opérations de placement et de suppression de fichiers, d'écriture et de lecture de données.

Étant donné que la plupart des fonctions d'application utilisent l'interface du système de fichiers dans leur travail, les droits d'accès aux fichiers déterminent en grande partie les privilèges d'accès de l'utilisateur au système. Ainsi, les privilèges des utilisateurs individuels sont formés.

Il existe 3 catégories d'utilisateurs associées à chaque fichier :

Propriétaire;

Groupe de propriétaires ;

D'autres utilisateurs.

Le sous-système de fichiers assure la redirection des requêtes adressées aux périphériques vers les modules correspondants des sous-systèmes d'E/S.

Le sous-système d'E/S gère les demandes du sous-système de fichiers et le sous-système de contrôle de processus pour l'accès aux périphériques, fournit la mise en mémoire tampon des données et l'interaction avec les pilotes de périphérique.

Les pilotes sont des modules spéciaux du noyau qui servent directement les périphériques externes.

Sous-système de gestion des processus et de la mémoire contrôle la création et la suppression des processus, la répartition des ressources système, la mémoire et le processeur entre les processus, la synchronisation des processus, la communication interprocesseur.

Une tâche spéciale du noyau appelée planificateur processus. Le planificateur démarre les processus système et s'assure que le processus ne prend pas en charge les ressources système partagées.

Module de gestion de mémoire fournit l'allocation de RAM pour les tâches appliquées, y compris virtuelles. Cela signifie qu'il offre la possibilité de placer une partie du processus dans la mémoire secondaire (c'est-à-dire sur le disque dur) et de la déplacer dans la RAM selon les besoins.

Le processus libère le processeur avant une longue opération d'E/S ou lorsque la tranche de temps expire. Dans ce cas, le planificateur sélectionne le processus suivant avec la priorité la plus élevée et le lance pour exécution.

Module de communication interprocesseur responsable de la notification aux processus des événements à l'aide de signaux et offre la possibilité de transférer des données entre différents processus.

Brèves informations sur le développement du système d'exploitation UNIX

UNIX OS est apparu à la fin des années 60 en tant que système d'exploitation pour le mini-ordinateur PDP-7. Kenneth Thomson et Dennis Ritchie ont pris une part active au développement.

Les fonctionnalités du système d'exploitation UNIX sont les suivantes : mode multi-utilisateurs, nouvelle architecture de système de fichiers, etc.

En 1973, la plupart du noyau du système d'exploitation a été réécrit dans le nouveau langage C.

Depuis 1974, UNIX est distribué dans les universités américaines sous forme de codes sources.

Versions UNIX

Dès le début de la diffusion d'UNIX, diverses versions de l'OS ont commencé à apparaître dans les universités américaines.

Pour rationaliser, AT&T en 1982 a combiné plusieurs versions en une seule appelée variante du système d'exploitation - System III. En 1983 sort la version commerciale System V. En 1993, AT&T vend ses droits UNIX à Novell, qui passe ensuite au consortium X/Open et à Santa Cruz Operation (SCO).

Une autre gamme d'OS UNIX, BSD, est en cours de développement à l'Université de Californie (Berkeley). Il existe des versions gratuites de FreeBSD, OpenBSD.

A la famille OSF / 1 - Logiciel ouvert Foundation - comprend le consortium d'OS d'IBM, DEC et Hewlett Packard. Le système d'exploitation de cette famille comprend - HP-UX, AIX, Digital UNIX.

Versions gratuites du système d'exploitation UNIX

Il existe de nombreuses versions gratuites d'UNIX.

FreeBSD, NetBSD, OpenBSD- des variantes développées sur la base de BSD OS.

La famille de systèmes UNIX gratuits la plus populaire est la famille Linux... La première variante de Linux a été développée par Linus Torvalds en 1991. Il existe actuellement plusieurs variantes. Linux : Red Hat, Mandrake, Slackware, SuSE, Debian.

Caractéristiques communes des systèmes UNIX

Les différentes versions d'UNIX ont un certain nombre de points communs :

Multiprogrammation en temps partagé basée sur le multitâche préemptif ;

Prise en charge du mode multijoueur ;

Utilisation de la mémoire virtuelle et des mécanismes d'échange ;

Système de fichiers hiérarchique ;

Unification des opérations d'E/S basée sur une utilisation étendue du concept de fichier ;

Portabilité du système ;

Disponibilité des outils de communication réseau.

Avantages des systèmes UNIX

Les avantages du système d'exploitation basé sur UNIX incluent :



Portabilité;

Mise en œuvre efficace du multitâche ;

ouverture d'esprit ;

Disponibilité et respect strict des normes;

Système de fichiers unifié ;

Langage de commande puissant ;

La présence d'un nombre important de produits logiciels ;

Implémentation de la pile protocolaire TCP/IP ;

Capacité à travailler en tant que serveur ou poste de travail.

Serveurs basés sur UNIX

Le serveur est un ordinateur qui traite les demandes d'autres ordinateurs sur le réseau et fournit ses propres ressources pour stocker, traiter et transmettre des données. Un serveur UNIX peut remplir les rôles suivants :

Serveur de fichiers;

Serveur Web;

Serveur de courrier;

Serveur d'enregistrement (authentification) à distance ;

Serveurs de services Web secondaires (DNS, DHCP) ;

Serveur d'accès Internet

Gestion de l'ordinateur UNIX

Lorsque vous travaillez avec un système UNIX en mode serveur, en règle générale, le mode d'accès à distance est utilisé à l'aide d'un programme de terminal.

La session commence par la saisie du nom d'enregistrement et du mot de passe d'accès

Souvent, pour résoudre les tâches de gestion des serveurs, elles se limitent au mode de fonctionnement commande. Dans ce cas, pour le contrôle, l'entrée de commandes spéciales dans la ligne de commande dans un format spécial est utilisée. La ligne de commande a une invite spéciale, par exemple :

Vue générale de l'équipe :

  1. -bash-2.05b $ commande [options] [options]

Par exemple, l'appel de l'aide du système d'exploitation ressemble à ceci :

  1. -bash-2.05b $ man [clés] [sujet]
  2. Pour obtenir de l'aide sur l'utilisation de la commande man, tapez
  3. -bash-2.05b $ homme homme

Interprétation de la ligne de commande

Les conventions suivantes sont utilisées lors de la saisie des commandes :

Le premier mot de la ligne de commande est le nom de la commande ;

Le reste des mots sont des arguments.

Parmi les arguments se distinguent les clés (options) - mots (caractères) prédéfinis pour chaque commande, commençant par un (format court) ou une paire de tirets (format long). Par exemple:

Bash-2.05b $ tar –c –f arch.tar * .c

Bash-2.05b $ tar - -create - -file = arch.tar * .c

Lors de la spécification des options, elles peuvent être combinées. Par exemple, les commandes suivantes sont égales :

Bash-2.05b $ ls –a –l

Bash-2.05b $ ls –l –a

Bash-2.05b $ ls –al

D'autres arguments pointent vers les objets à opérer.

Variables shell

Lorsque vous travaillez dans le système, il existe un moyen de transmettre des paramètres aux programmes, à l'exception de l'utilisation des touches du shell de commande - en utilisant des variables d'environnement. La commande set est utilisée pour définir la variable d'environnement. Format de commande :

Bash-2.05b $ set variable_name = valeur

La suppression d'une variable d'environnement se fait avec la commande unset.

Pour faire référence à la valeur d'une variable, la notation $ variable_name est utilisée, par exemple, la commande :

Bash-2.05b $ echo $ CHEMIN

Affiche la valeur de la variable PATH.

L'histoire d'UNIX® remonte à 1969. La plupart des systèmes UNIX modernes sont des versions commerciales des distributions UNIX originales. Solaris de Sun, HP-UX Hewlett-Packard, AIX® d'IBM sont les meilleurs ambassadeurs UNIX, et ils ont aussi leurs propres éléments uniques et leurs propres solutions fondamentales. Par exemple, Sun Solaris est UNIX, mais il contient également de nombreux outils et extensions conçus spécifiquement pour les stations de travail et les serveurs Sun.

Linux® a été développé dans le but de fournir une alternative gratuite aux environnements UNIX commerciaux. Son histoire commence en 1991 ou même 1983, lors de la création du projet GNU, dont le but initial était de fournir une alternative libre à UNIX. Linux fonctionne sur de nombreuses autres plates-formes telles que Intel® / AMD x86. La plupart des systèmes d'exploitation UNIX sont capables de s'exécuter sur une seule plate-forme.

Linux et UNIX ont des racines historiques communes, mais il existe également des différences significatives. De nombreux outils, utilitaires et applications gratuites qui sont standard sur Linux, ont été conçus à l'origine comme une alternative gratuite aux programmes UNIX. Linux prend souvent en charge de nombreuses options et applications, empruntant les fonctionnalités les meilleures ou les plus populaires d'UNIX.

En tant qu'administrateur ou développeur habitué à travailler avec Linux, un système UNIX peut ne pas être très convivial. En revanche, le socle d'un système d'exploitation de type UNIX (outils, système de fichiers, APIs) est assez standardisé. Cependant, certains détails des systèmes peuvent différer considérablement. Ces différences seront discutées plus loin dans cet article.

Différences techniques

Les développeurs de distributions UNIX commerciales s'appuient sur une base de clients et une plate-forme de serveurs spécifiques pour leur système d'exploitation. Ils ont une bonne idée du type de support et d'optimisation des applications à mettre en œuvre. Les fournisseurs UNIX font de leur mieux pour assurer la compatibilité entre les différentes versions. Ils ont également publié leurs normes de système d'exploitation.

Le développement GNU / Linux, en revanche, n'est pas spécifique à la plate-forme et au client, et les développeurs GNU / Linux ont des antécédents et des perspectives différents. Il n'y a pas d'ensemble standard strict d'outils ou d'environnements dans la communauté Linux. Pour résoudre ce problème, le projet Linux Standards Base (LSB) a été lancé, mais il s'est avéré ne pas être aussi efficace que nous le souhaiterions.

Ce manque de standardisation conduit à des incohérences importantes au sein de Linux. Pour certains développeurs, la possibilité d'exploiter le meilleur des autres systèmes d'exploitation est un plus, mais il n'est pas toujours pratique de copier des éléments UNIX sous Linux, par exemple, lorsque les noms de périphériques sous Linux peuvent être extraits d'AIX, tandis que les outils pour travailler avec le système de fichiers est axé sur HP-UX. Des incompatibilités de ce type se produisent également entre différentes distributions Linux. Par exemple, Gentoo et RedHat implémentent différentes méthodes de mise à jour.

A titre de comparaison - chaque nouvelle version du système UNIX est accompagnée d'une description bien documentée des nouvelles fonctionnalités et des modifications d'UNIX. Les commandes, outils et autres éléments changent rarement, et souvent les mêmes arguments de ligne de commande pour les applications restent les mêmes sur de nombreuses versions de ce logiciel. Lorsque des modifications importantes sont apportées à ces éléments, les fournisseurs UNIX commerciaux fournissent souvent le wrapper nécessaire pour maintenir la compatibilité avec les versions antérieures de l'outil.

Cette compatibilité signifie que les utilitaires et applications peuvent être utilisés sur les nouvelles versions des systèmes d'exploitation sans vérifier ni modifier leur code source. Par conséquent, le passage à nouvelle version UNIX, qui ne diffère généralement pas fondamentalement de l'ancienne version, représente beaucoup moins d'efforts pour les utilisateurs ou les administrateurs que de passer d'une distribution Linux à une autre.

Architecture matérielle

La plupart des versions commerciales d'UNIX sont conçues pour une ou un petit nombre d'architectures matérielles. HP-UX s'exécute uniquement sur les plates-formes PA-RISC et Itanium, Solaris sur les plates-formes SPARC et x86, et AIX est réservé aux processeurs POWER.

En raison de ces restrictions, les fournisseurs UNIX sont relativement libres de modifier leur code pour ces architectures et de tirer parti de leur architecture à tout avantage. Parce qu'ils connaissent les périphériques qu'ils prennent en charge, leurs pilotes fonctionnent mieux et ils n'ont pas besoin de prendre en compte les limitations du BIOS du PC.

Linux, en revanche, a été historiquement conçu pour une compatibilité maximale. Linux est disponible sur une variété d'architectures, et le nombre de périphériques d'E/S et d'autres périphériques pouvant être utilisés avec ce système d'exploitation est presque illimité. Les développeurs ne peuvent pas savoir à l'avance quel matériel spécifique sera installé sur un ordinateur et ne peuvent souvent pas garantir une utilisation efficace de celui-ci. Un exemple est la gestion de la mémoire Linux. Auparavant, Linux utilisait le modèle de mémoire segmentée développé à l'origine pour x86. Il est maintenant adapté pour utiliser la mémoire paginée, mais conserve encore certaines des exigences de mémoire segmentée, ce qui pose des problèmes si l'architecture ne prend pas en charge la mémoire segmentée. Ce n'est pas un problème pour les fabricants UNIX. Ils savent exactement sur quel matériel leur UNIX fonctionnera.

Coeur

Le noyau est le cœur du système d'exploitation. Le code source du noyau des distributions UNIX commerciales est la propriété de leurs développeurs et n'est pas distribué en dehors de l'entreprise. L'exact opposé est le cas avec Linux. Les procédures de compilation et de correction des noyaux et des pilotes sont assez différentes. Pour Linux et d'autres systèmes d'exploitation open source, le correctif peut être publié en tant que source et l'utilisateur final peut l'installer, le tester et même le modifier. Ces correctifs ne sont généralement pas testés de manière aussi approfondie que les correctifs des fournisseurs UNIX commerciaux. Puisqu'il n'y a pas de liste complète des applications et des environnements qui doivent être testés pour fonctionner correctement sur Linux, les développeurs Linux dépendent des utilisateurs finaux et d'autres développeurs pour détecter les bogues.

Les fournisseurs de distribution commerciale UNIX publient les noyaux uniquement sous forme de code exécutable. Certaines versions sont monolithiques, tandis que d'autres ne mettent à jour qu'un module de noyau spécifique. Mais dans tous les cas, cette version n'est fournie que sous forme de code exécutable. Si une mise à jour est nécessaire, l'administrateur doit attendre que le fournisseur publie un correctif binaire, mais il peut être réconfortant que le fournisseur effectue une vérification de compatibilité descendante approfondie sur son correctif.

Toutes les versions commerciales d'UNIX ont évolué dans une certaine mesure vers un noyau modulaire. Les pilotes et les fonctionnalités individuelles du système d'exploitation sont disponibles en tant que composants séparés et peuvent être chargés ou déchargés du noyau selon les besoins. Mais l'architecture modulaire ouverte de Linux est beaucoup plus flexible. Cependant, la flexibilité et l'adaptabilité de Linux signifient un changement constant. Le code source de Linux change constamment et, au gré du développeur, l'API peut changer. Lorsqu'un module ou un pilote est écrit pour une version commerciale d'UNIX, il durera beaucoup plus longtemps que le même pilote pour Linux.

Prise en charge du système de fichiers

L'une des raisons pour lesquelles Linux est devenu un système d'exploitation suffisamment puissant est sa large compatibilité avec d'autres systèmes d'exploitation. L'une des caractéristiques les plus évidentes est l'abondance de systèmes de fichiers disponibles. La plupart des versions commerciales d'UNIX prennent en charge deux ou trois types de système de fichiers. Linux, cependant, prend en charge la plupart des systèmes de fichiers modernes. montre quels systèmes de fichiers sont pris en charge par UNIX OS. N'importe lequel de ces systèmes de fichiers peut être monté sur Linux, bien que tous ces systèmes ne prennent pas entièrement en charge la lecture et l'écriture de données.

Tableau 1. Systèmes de fichiers standard pour UNIX

La plupart des versions commerciales d'UNIX prennent en charge les systèmes de fichiers de journalisation. Par exemple, HP-UX utilise hfs comme système de fichiers par défaut, mais il prend également en charge le système de fichiers journalisé vxfs. Solaris prend en charge ufs et zfs. Un système de fichiers de journalisation est un composant essentiel de tout environnement de serveur d'entreprise. La prise en charge de Linux pour les systèmes de fichiers journalisés était tardive, mais il existe maintenant plusieurs options - des clones de systèmes de fichiers commerciaux (xfs, jfs) à spécifiques à fichier Linux systèmes (ext3, reiserfs).

Les autres fonctionnalités des systèmes de fichiers incluent la prise en charge des quotas, de la liste de contrôle d'accès des fichiers, de la mise en miroir, des instantanés système et du redimensionnement. Ils sont pris en charge sous une forme ou une autre par les systèmes de fichiers Linux. La plupart de ces fonctionnalités ne sont pas standard sous Linux. Certaines fonctionnalités peuvent fonctionner sur un système de fichiers, tandis que d'autres nécessitent un système de fichiers différent. Certaines de ces fonctionnalités ne sont tout simplement pas disponibles sur certains fichiers Systèmes Linux tandis que d'autres nécessitent l'installation d'outils supplémentaires, tels qu'une version spécifique de LVM ou la prise en charge des baies de disques (package raid logiciel). Historiquement, Linux a eu du mal à assurer la compatibilité entre les API et les outils standard, de nombreux systèmes de fichiers implémentent donc ces fonctionnalités de différentes manières.

Étant donné que les systèmes UNIX commerciaux prennent en charge un nombre limité de systèmes de fichiers, leurs outils et techniques sont plus standardisés. Par exemple, étant donné qu'un seul système de fichiers principal était pris en charge dans Irix, il n'y avait qu'une seule façon de définir les ACL. C'est beaucoup plus pratique pour l'utilisateur final et pour une meilleure prise en charge de ce système d'exploitation.

Disponibilité des applications

La plupart des applications de base sont les mêmes sous UNIX et Linux. Par exemple, les commandes cp, ls, vi et cc sont disponibles sous UNIX et Linux et sont très similaires, voire totalement identiques. Les versions Linux de ces outils sont basées sur les versions GNU de ces outils, tandis que les versions UNIX de ces outils sont basées sur des outils UNIX traditionnels. Ces outils UNIX ont une longue histoire et ont rarement changé.

Mais cela ne signifie pas que les versions commerciales d'UNIX ne peuvent pas être utilisées avec les outils GNU. En fait, de nombreux fournisseurs de systèmes d'exploitation UNIX commerciaux incluent de nombreux outils GNU dans leurs distributions ou les proposent sous forme de modules complémentaires gratuits. Les outils GNU ne sont pas seulement des outils standard. Certains de ces utilitaires gratuits n'ont pas d'équivalents commerciaux (emacs ou Perl). La plupart des fabricants préinstallent ces programmes et ils sont soit automatiquement installés avec le système, soit disponibles en tant que module complémentaire.

Les applications open source gratuites sont presque toujours incluses dans toutes les distributions Linux. Il existe une grande quantité de logiciels gratuits disponibles pour Linux, et nombre de ces applications ont été portées sur des versions commerciales du système d'exploitation UNIX.

Les applications commerciales et/ou fermées (CAO, logiciels financiers, éditeurs graphiques) peuvent ne pas avoir d'analogues pour Linux. Alors que certains fournisseurs publient des versions de leurs applications pour Linux, la plupart des fournisseurs ne sont pas pressés de le faire jusqu'à ce que Linux gagne en popularité auprès des utilisateurs.

D'autre part, les versions commerciales d'UNIX ont historiquement pris en charge un grand nombre d'applications d'entreprise telles qu'Oracle ou SAP. Linux perd la difficulté de certifier de grandes applications, tandis que les versions commerciales d'UNIX ne changent pas beaucoup d'une version à l'autre. Linux peut changer radicalement non seulement avec chaque nouvelle distribution, mais parfois entre les versions de la même distribution. Par conséquent, il est très difficile pour un éditeur de logiciel de savoir dans quel environnement son application sera utilisée.

L'administration du système

Bien que certaines distributions Linux soient livrées avec un ensemble standard d'outils d'administration système, tels que SUSE "s YaST, il n'existe pas de norme Linux commune pour les outils d'administration système. Des fichiers texte et des outils de ligne de commande sont disponibles, mais ils peuvent parfois être difficiles à utiliser. Chaque version commerciale UNIX possède sa propre interface de gestion du système, à partir de laquelle vous pouvez gérer et modifier les éléments du système.Vous trouverez ci-dessous un exemple de System Administration Manager pour HP-UX.

Ce SAM contient les modules suivants :

  • Les utilisateurs ou groupes à gérer.
  • Paramètres du noyau qui peuvent être modifiés.
  • Configuration du réseau.
  • Configuration et initialisation des disques.
  • Configuration du serveur X.

La qualité de ce package utilitaire est excellente, et ce package utilitaire fonctionne bien avec fichiers texte... Il n'y a pas d'équivalent de cet outil pour Linux. Même YaST de SUSE n'a pas la même fonctionnalité.

Un autre aspect sous UNIX et Linux qui semble changer avec presque toutes les versions du système d'exploitation est l'emplacement des scripts d'initialisation du système. Heureusement, /sbin/init et /etc/inittab sont des répertoires standards. Mais les scripts de démarrage du système se trouvent dans des répertoires différents. montre les emplacements où les scripts d'initialisation du système sont stockés pour diverses distributions UNIX et Linux.

Tableau 2. Emplacement des scripts d'initialisation du système pour différentes versions UNIX
HP-UX/sbin/init.d
Aix/etc/rc.d/init.d
Irix/etc/init.d
Solaris/etc/init.d
Chapeau rouge/etc/rc.d/init.d
SUSE/etc/rc.d/init.d
Debian/etc/init.d
Slackware/etc/rc.d

En raison du grand nombre de distributions Linux et du nombre quasi infini d'applications disponibles (étant donné qu'il existe également de nombreuses versions de cette application) pour cet OS, la gestion des programmes sous Linux devient une tâche difficile. Choix le bon outil dépend de la distribution avec laquelle vous travaillez. Un inconvénient supplémentaire provient du fait que certaines distributions utilisent le format de fichier Redhat Package Manager (RPM), alors que leurs programmes sont incompatibles. Cette séparation conduit à un grand nombre d'options pour travailler avec des packages, et il n'est pas toujours clair quel système est utilisé dans un environnement particulier.

D'autre part, les distributions UNIX commerciales contiennent des gestionnaires de paquets standard. Même s'il existe différentes versions d'applications et des formats spécifiques pour différentes versions d'UNIX, l'environnement de gestion des applications est le même. Par exemple, Solaris utilise les mêmes outils de gestion de packages d'applications depuis sa création. Et très probablement, les moyens de Solaris d'identifier, d'ajouter ou de supprimer des progiciels seront toujours les mêmes.

Les fabricants de distributions UNIX commerciales fournissent également le matériel sur lequel leur système d'exploitation est conçu pour fonctionner, afin qu'ils puissent intégrer de nouveaux périphériques dans leur système d'exploitation, ce qui est beaucoup plus difficile pour Linux. Par exemple, dans dernières versions Linux a tenté d'implémenter la prise en charge des composants remplaçables à chaud (avec un succès variable). Les versions commerciales d'UNIX ont cette capacité depuis de nombreuses années. De plus, les versions commerciales d'UNIX offrent une meilleure surveillance du matériel que Linux. Les fabricants peuvent écrire des pilotes et les intégrer dans leur système d'exploitation pour surveiller la santé du système, telles que les erreurs de mémoire ECC, la consommation d'énergie ou tout autre composant matériel. Ce type de support pour Linux n'est pas attendu avant un avenir lointain.

Le matériel pour les systèmes UNIX commerciaux dispose également d'options de démarrage plus avancées. Avant le démarrage du système d'exploitation, il existe de nombreuses options pour configurer son mode de démarrage, vérifier la santé du système ou ajuster les paramètres matériels. Le BIOS d'un PC standard a moins, voire aucune, de ces options.

Soutien

L'une des différences les plus importantes entre Linux et UNIX est le coût. Les fournisseurs de systèmes UNIX commerciaux ont fixé un prix élevé pour leur UNIX, bien qu'il ne puisse être utilisé qu'avec leurs plates-formes matérielles. Les distributions Linux, en revanche, sont relativement peu coûteuses, voire gratuites.

Lors de l'achat d'une version commerciale d'UNIX, les fabricants fournissent généralement un support technique. La plupart des utilisateurs de Linux n'ont pas le support du fabricant du système d'exploitation. Ils ne peuvent obtenir de l'aide que par e-mail, forums et diverses communautés d'utilisateurs Linux. Cependant, ces groupes ne sont pas réservés aux utilisateurs Linux. De nombreux administrateurs de systèmes d'exploitation UNIX commerciaux participent à ces groupes de support ouverts afin de pouvoir à la fois fournir une assistance et, si nécessaire, l'utiliser. De nombreuses personnes trouvent ces groupes d'entraide encore plus utiles que le système d'assistance proposé par le fabricant du système d'exploitation.

Conclusion

Les principes fondamentaux d'UNIX et de Linux sont très similaires. Pour un utilisateur ou un administrateur système, la transition de Linux vers UNIX ajoutera quelques désagréments au travail, mais en général, la transition sera indolore. Même si leurs systèmes de fichiers et noyaux diffèrent et prennent du temps à maîtriser, les outils et les API restent les mêmes. En général, ces différences ne sont pas plus importantes que les différences entre les principales versions d'UNIX. Toutes les branches d'UNIX et de Linux évoluent progressivement et différeront légèrement les unes des autres, mais en raison de la maturité des concepts UNIX, les fondamentaux du système d'exploitation ne changeront pas beaucoup.

MINISTÈRE DE L'ÉDUCATION ET DES SCIENCES DE LA RUSSIE

FÉDÉRATIONS

AGENCE FÉDÉRALE POUR L'ÉDUCATION

ÉTABLISSEMENT D'ENSEIGNEMENT D'ÉTAT

ENSEIGNEMENT PROFESSIONNEL SUPÉRIEUR

UNIVERSITÉ D'INGÉNIERIE RADIO D'ÉTAT DE TAGANROG

Discipline "Informatique"

"Système d'exploitation UNIX"

Complété par : Orda-Zhigulina D.V., gr. E-25

Vérifié par : V. Yu. Vishnevetskiy.

Taganrog 2006


introduction

Qu'est-ce qu'Unix 3

Où obtenir gratuitement Unix 7

Partie principale. (Description Unix)

1. Concepts de base d'Unix 8

2. Système de fichiers 9

2.1 Types de fichiers 9

3. Interpréteur de commandes 11

4. Noyau d'UNIX OS 12

4.1 Organisation générale du noyau UNIX traditionnel 13

4.2 Fonctions principales du noyau 14

4.3 Principes d'interaction avec le noyau 15

4.4 Principes de gestion des interruptions 17

5. Contrôle E/S 18

5.1 Principes de la mise en mémoire tampon des E/S système 19

5.2 Appels système pour contrôler les E/S 21

6. Interfaces du pilote et points d'entrée 23

6.1 Bloquer les pilotes 23

6.2 Pilotes de caractères 24

6.3 Pilotes de flux 25

7. Commandes et utilitaires 25

7.1 Organisation des commandes sous UNIX OS 26

7.2 Redirection des E/S et de la tuyauterie 26

7.3 Commandes intégrées, bibliothèque et utilisateur 26

7.4 Programmation en langage de commande 27

8. Outils d'interface utilisateur graphique 27

8.1 ID utilisateur et groupes d'utilisateurs 30

8.2 Protection des fichiers 32

8.3 Systèmes d'exploitation potentiels prenant en charge l'environnement de système d'exploitation UNIX 33

Conclusion

Les principales différences entre Unix et les autres OS 36

Applications Unix 37


introduction

Qu'est-ce qu'Unix

Le terme Unix et pas tout à fait son équivalent UNIX est utilisé dans significations différentes... Commençons par le deuxième terme, qui est plus simple. En un mot, UNIX (sous cette forme) est une marque déposée appartenant à l'origine à AT&T Corporation, qui a changé de nombreux propriétaires au cours de sa longue vie et est maintenant la propriété d'une organisation appelée Open Group. Le droit d'utiliser le nom UNIX est obtenu grâce à une sorte de "contrôle des poux" - passer des tests de conformité avec les spécifications d'un certain système d'exploitation de référence (Single Unix Standard - qui dans ce cas peut être traduit par le seul standard sur Unix). Cette procédure est non seulement compliquée, mais aussi très coûteuse, et donc seuls quelques systèmes d'exploitation existants l'ont subie, et tous sont propriétaires, c'est-à-dire qu'ils sont la propriété de certaines sociétés.

Parmi les corporations qui ont gagné le droit au nom d'UNIX puis de développeurs/testeurs et de sang (plus précisément de dollars) de propriétaires, on peut citer les suivantes :

Sun avec son SunOS (plus connu dans le monde sous le nom de Solaris) ;

IBM, le développeur du système AIX ;

Hewlett-Packard - le propriétaire du système HP-UX ;

IRIX est un système d'exploitation de SGI.

De plus, le nom UNIX lui-même s'applique aux systèmes :

True64 Unix, développé par DEC, qui a été liquidé par Compaq, et maintenant, avec ce dernier, est devenu la propriété du même Hewlett-Packard ;

UnixWare appartient à SCO (fusion de Caldera et Santa Cruz Operation).

Étant propriétaires, tous ces systèmes sont vendus très cher (même à l'échelle américaine). Cependant, ce n'est pas le principal obstacle à la diffusion d'UNIX lui-même, car leur caractéristique commune est liée à certaines plates-formes matérielles : AIX fonctionne sur des serveurs et des postes de travail IBM avec des processeurs Power, HP-UX - sur ses propres machines HP-PA (Precision Architecture), IRIX - sur les stations graphiques de SGI, embarquant des processeurs MIPS, True64 Unix - est destiné aux processeurs Alpha (malheureusement, dans le défunt). Seul UnixWare est focalisé sur la plate-forme PC "démocratique", et Solaris existe en versions pour deux architectures - la sienne, Sparc, et tout de même PC, qui, cependant, n'ont pas beaucoup contribué à leur prévalence - en raison de la prise en charge relativement faible des nouveaux périphériques PC.

Ainsi, UNIX est avant tout un concept juridique. Mais le terme Unix a une interprétation technologique. C'est ainsi que l'industrie informatique appelle toute la famille des systèmes d'exploitation, soit dérivés de la société UNIX "primitive" AT&T, soit reproduisant ses fonctions "à partir de zéro", y compris les systèmes d'exploitation libres tels que Linux, FreeBSD et autres BSD, aucune vérification pour Conformité à la norme Unix unique jamais exposée. C'est pourquoi ils sont souvent appelés Unix-like.

Le terme "systèmes compatibles POSIX", qui a un sens proche, est également largement utilisé, qui regroupe la famille d'OS correspondant à l'ensemble de normes du même nom. Les normes POSIX (Portable Operation System Interface based on uniX) elles-mêmes ont été développées sur la base de la pratique adoptée dans les systèmes Unix, et donc ces derniers sont tous par définition compatibles POSIX. Cependant, ce ne sont pas entièrement des synonymes : les systèmes d'exploitation liés à Unix seulement indirectement (QNX, Syllable), ou sans rapport du tout (jusqu'à Windows NT / 2000 / XP) prétendent être compatibles POSIX.

Pour clarifier la relation entre UNIX, Unix et POSIX, nous devons approfondir un peu l'histoire. En fait, l'histoire de ce problème est discutée en détail dans le chapitre correspondant du livre "Free Unix: Linux, FreeBSD and Others" (dans un futur proche sera publié par la maison d'édition BHV-Petersburg) et dans des articles sur l'histoire des systèmes Linux et BSD.

Le système d'exploitation Unix (plus précisément, sa première version) a été développé par des employés de Bell Labs (une division d'AT&T) en 1969-1971. Ses premiers auteurs - Ken Thompson et Dennis Ritchie - l'ont fait uniquement à leurs propres fins, notamment pour pouvoir s'amuser avec leur jeu StarTravel préféré. Et pour un certain nombre de raisons juridiques, l'entreprise elle-même ne pouvait pas l'utiliser comme produit commercial. Cependant, l'application pratique d'Unix a été trouvée assez rapidement. Tout d'abord, il a été utilisé aux Bell Labs pour préparer toutes sortes de documentation technique (y compris les brevets). Et deuxièmement, le système de communication UUCP (Unix to Unix Copy Program) était basé sur Unix.

Un autre domaine d'application d'Unix dans les années 70 et au début des années 80 du siècle dernier s'est avéré assez inhabituel. À savoir, dans le code source, il a été distribué entre les institutions scientifiques menant des travaux dans le domaine de l'informatique. Le but d'une telle diffusion (elle n'était pas totalement gratuite au sens actuel, mais s'est avérée en fait très libérale) était : l'éducation et la recherche dans le domaine de la connaissance susmentionné.

Le plus connu est le système BSD Unix, créé à l'Université de Berkeley, en Californie. Ce qui, se débarrassant progressivement du code propriétaire de l'Unix primordial, a finalement, après des rebondissements dramatiques (décrits en détail ici), a donné naissance aux systèmes BSD libres modernes - FreeBSD, NetBSD et autres.

L'un des résultats les plus importants du travail des hackers universitaires a été (1983) l'introduction dans Unix du support du protocole TCP / IP, sur lequel était basé le réseau ARPANET de l'époque (et qui est devenu le fondement de l'Internet moderne). Cela est devenu une condition préalable à la domination d'Unix dans tous les domaines liés au World Wide Web. Et il s'est avéré être le prochain application pratique cette famille de systèmes d'exploitation - à ce moment-là, il n'était plus nécessaire de parler d'un seul Unix. Parce qu'il, comme il a été dit plus tôt, a séparé deux de ses branches - provenant de l'UNIX primordial (il a finalement reçu le nom de Système V) et le système d'origine berkéléienne. D'autre part, System V formait la base de ces divers UNIX "propriétaires", qui, en fait, avaient le droit légal de revendiquer ce nom.

Cette dernière circonstance - la ramification de l'OS autrefois unique en plusieurs lignes, perdant progressivement la compatibilité, - est entrée en conflit avec l'une des pierres angulaires de l'idéologie Unix : la portabilité du système entre différentes plates-formes, et ses applications - à partir d'un système Unix à un autre. Cela a donné lieu à l'activité de divers types d'organisations de normalisation, qui a finalement abouti à la création de l'ensemble de normes POSIX, qui a été mentionné précédemment.

C'est sur les normes POSIX que Linus Torvalds s'est appuyé, créant "à partir de zéro" (c'est-à-dire sans utiliser de code existant auparavant) son système d'exploitation - Linux. Et cela, après avoir maîtrisé rapidement et avec succès les domaines d'application traditionnels des systèmes Unix (développement de logiciels, communications, Internet), leur a finalement ouvert un nouveau - les plates-formes d'utilisateurs de bureau à des fins générales. Cela a assuré sa popularité parmi les gens - une popularité dépassant celle de tous les autres systèmes Unix, pris ensemble, à la fois propriétaires et libres.

Ensuite, nous parlerons de travailler sur des systèmes Unix dans le sens large ce mot, sans tenir compte de toutes sortes de marques et d'autres problèmes juridiques. Bien que les principaux exemples liés à la façon de travailler soient tirés du domaine de leurs implémentations libres - Linux, dans une moindre mesure FreeBSD, et encore moins d'autres systèmes BSD.

Où puis-je obtenir gratuitement Unix ?

Base FreeBSD - www.freebsd.org;

Vous pouvez contacter www.sco.com


Partie principale. (Description Unix)

1. Concepts Unix de base

Unix repose sur deux concepts de base : « processus » et « fichier ». Les processus sont le côté dynamique du système, ce sont des sujets ; et les fichiers sont statiques, ce sont les objets des processus. Presque toute l'interface d'interaction des processus avec le noyau et entre eux ressemble à l'écriture / la lecture de fichiers. Des éléments comme les signaux, la mémoire partagée et les sémaphores doivent cependant être ajoutés.

Les processus peuvent être grossièrement divisés en deux types : les tâches et les démons. Une tâche est un processus qui accomplit son travail dans le but de le terminer et de le terminer le plus rapidement possible. Le démon attend les événements qu'il doit gérer, traite les événements qui se sont produits et attend à nouveau ; il se termine généralement par ordre d'un autre processus, le plus souvent l'utilisateur le tue en donnant la commande "kill process_number". En ce sens, il s'avère qu'une tâche interactive qui traite les entrées utilisateur ressemble plus à un démon qu'à une tâche.

2. Système de fichiers

Dans les anciens Unix, 14 lettres étaient attribuées au nom, dans les nouveaux, cette restriction est supprimée. En plus du nom de fichier, le répertoire contient son identifiant d'inode - un entier qui détermine le numéro du bloc dans lequel le les attributs du fichier sont écrits, parmi lesquels : le numéro de l'utilisateur propriétaire du fichier, le nombre de groupes, le nombre de liens vers le fichier (voir ci-dessous) la date et l'heure de création, la dernière modification et le dernier accès au fichier ; attributs d'accès. Les attributs d'accès contiennent le type de fichier (voir ci-dessous), les attributs de modification des droits au démarrage (voir ci-dessous) et les droits d'accès pour le propriétaire, le camarade de classe et d'autres pour la lecture, l'écriture et l'exécution. Le droit d'effacer un fichier est déterminé par le droit d'écrire dans le répertoire ci-dessus.

Chaque fichier (mais pas un répertoire) peut être connu sous plusieurs noms, mais ils doivent être situés sur la même section. Tous les liens vers le fichier sont égaux ; le fichier est effacé lorsque le dernier lien vers le fichier est supprimé. Si le fichier est ouvert (en lecture et/ou en écriture), alors le nombre de liens vers celui-ci augmente d'un de plus ; autant de programmes qui ouvrent un fichier temporaire le suppriment immédiatement, de sorte qu'en cas d'arrêt anormal, lorsque le système d'exploitation ferme les fichiers ouverts par le processus, ce fichier temporaire sera supprimé système opérateur.

Il y en a un de plus caractéristique intéressante système de fichiers : si après la création d'un fichier, l'enregistrement sur celui-ci ne s'est pas effectué successivement, mais à de grands intervalles, alors aucun espace disque n'est alloué pour ces intervalles. Ainsi, le volume total de fichiers dans une partition peut être supérieur au volume de la partition, et lorsqu'un tel fichier est supprimé, moins d'espace est libéré que sa taille.

2.1 Types de fichiers

Les fichiers sont des types suivants :

fichier d'accès direct régulier;

répertoire (un fichier contenant les noms et identifiants d'autres fichiers) ;

lien symbolique (une chaîne avec le nom d'un autre fichier) ;

dispositif de blocage (disque ou bande magnétique);

périphérique série (terminaux, ports série et parallèle ; les disques et les bandes ont également une interface de périphérique série)

canal nommé.

Les fichiers spéciaux pour travailler avec les périphériques sont généralement situés dans le répertoire "/ dev". En voici quelques-uns (nominés pour FreeBSD) :

tty * - terminaux, y compris : ttyv - console virtuelle ;

ttyd - Terminal DialIn (généralement un port série) ;

cuaa - ligne DialOut

ttyp - pseudo-terminal de réseau ;

tty - le terminal auquel la tâche est associée ;

wd * - disques durs et leurs sous-sections, y compris : wd - disque dur ;

wds - la partition de ce disque (appelée ici "slice");

wds - section de partition ;

fd - disquette ;

rwd *, rfd * - identique à wd * et fd *, mais avec accès séquentiel ;

Parfois, il est nécessaire que le programme lancé par l'utilisateur, n'avait pas les droits de l'utilisateur qui l'a lancé, mais de quelques autres. Dans ce cas, l'attribut de modification des droits en droits de l'utilisateur - le propriétaire du programme est défini. (A titre d'exemple, je vais donner un programme qui lit un fichier avec des questions et réponses et, sur la base de ce qui a été lu, teste l'étudiant qui a lancé ce programme. Le programme doit avoir le droit de lire le fichier avec des réponses, mais le étudiant qui l'a lancé ne doit pas.) Par exemple, le programme passwd fonctionne avec lequel l'utilisateur peut changer son mot de passe. L'utilisateur peut exécuter le programme passwd, il peut apporter des modifications à la base de données système - mais l'utilisateur ne le peut pas.

Contrairement à DOS, dans lequel le nom complet du fichier ressemble à "drive: pathname", et RISC-OS, dans lequel il ressemble à "-file-system-drive: $. Path.name" (ce qui a généralement ses avantages), Unix utilise une notation transparente sous la forme "/chemin/nom". La racine est mesurée à partir de la partition à partir de laquelle le noyau Unix a été chargé. Si vous devez utiliser une partition différente (et que la partition de démarrage ne contient généralement que l'essentiel pour le démarrage), utilisez la commande `mount / dev / partition_file directory`. Dans le même temps, les fichiers et sous-répertoires précédemment situés dans ce répertoire deviennent inaccessibles jusqu'à ce que la partition soit démontée (naturellement, toutes les personnes normales utilisent des répertoires vides pour monter des partitions). Seul le superviseur a le droit de monter et de démonter.

Au démarrage, chaque processus peut supposer que trois fichiers sont déjà ouverts pour lui, qui lui sont connus comme stdin au descripteur 0 ; sortie standard de sortie au descripteur 1 ; et la sortie standard stderr au descripteur 2. A la connexion, lorsque l'utilisateur entre un nom d'utilisateur et un mot de passe, et que le shell est lancé pour lui, tous les trois sont dirigés vers /dev/tty ; plus tard, l'un d'eux peut être redirigé vers n'importe quel fichier.

3. Interpréteur de commandes

Unix est presque toujours livré avec deux interpréteurs de commandes - sh (shell) et csh (shell de type C). En plus d'eux, il y a aussi bash (Bourne), ksh (Korn) et d'autres. Sans entrer dans les détails, je donnerai des principes généraux :

Toutes les commandes, à l'exception du changement de répertoire courant, de la définition des variables d'environnement et des instructions de programmation structurée, sont des programmes externes. Ces programmes se trouvent généralement dans les répertoires /bin et /usr/bin. Les programmes d'administration système se trouvent dans les répertoires /sbin et /usr/sbin.

Une commande se compose du nom du programme à exécuter et des arguments. Les arguments sont séparés du nom de la commande et les uns des autres par des espaces et des tabulations. Certains caractères spéciaux sont interprétés par le shell lui-même. Les caractères spéciaux sont "" `! $ ^ *? | &; (Quel autre ?).

Plusieurs commandes peuvent être données sur la même ligne de commande. Les équipes peuvent être divisées ; ( exécution séquentielle commandes), & (exécution simultanée asynchrone de commandes), | (exécution synchrone, stdout de la première commande sera transmis à stdin de la seconde).

De plus, vous pouvez prendre l'entrée standard d'un fichier en incluant "file" (le fichier sera effacé) ou ">> file" (écrit à la fin du fichier) comme l'un des arguments.

Si vous avez besoin d'informations sur une commande, lancez la commande "man command_name". Cela sera affiché à l'écran via le programme "more" - voyez comment le gérer sur votre Unix avec la commande "man more".

4. Noyau du système d'exploitation UNIX

Comme pour tout système d'exploitation multi-utilisateurs qui protège les utilisateurs les uns des autres et protège les données système de tout utilisateur non privilégié, UNIX dispose d'un noyau sécurisé qui gère les ressources informatiques et fournit aux utilisateurs un ensemble de services de base.

La commodité et l'efficacité des systèmes d'exploitation UNIX modernes ne signifient pas que l'ensemble du système, y compris le noyau, est conçu et structuré de la meilleure façon. Le système d'exploitation UNIX a évolué au fil des ans (c'est le premier système d'exploitation de l'histoire qui continue de gagner en popularité à un âge aussi avancé - plus de 25 ans). Naturellement, les capacités du système ont augmenté et, comme c'est souvent le cas dans grands systèmes, les améliorations qualitatives de la structure du système d'exploitation UNIX n'ont pas suivi la croissance de ses capacités.

Par conséquent, le cœur de la plupart des systèmes d'exploitation UNIX commerciaux modernes n'est pas un monolithe très bien structuré et de grande taille. Pour cette raison, la programmation au niveau du noyau du système d'exploitation UNIX continue d'être un art (à l'exception de la technologie bien établie et compréhensible pour le développement de pilotes de périphériques externes). Ce manque d'adaptabilité à l'organisation du noyau UNIX ne satisfait pas beaucoup. D'où la volonté de reproduire intégralement l'environnement UNIX OS avec une organisation système totalement différente.

En raison de sa plus grande prévalence, le noyau UNIX System V est souvent discuté (il peut être considéré comme traditionnel).

4.1 Organisation générale du noyau UNIX traditionnel

L'une des principales réalisations d'UNIX OS est que le système est très mobile. La signification de cette qualité est que l'ensemble du système d'exploitation, y compris son noyau, est relativement facile à porter sur diverses plates-formes matérielles. Toutes les parties du système, à l'exception du noyau, sont complètement indépendantes de la machine. Ces composants sont soigneusement écrits en C, et pour les porter vers nouvelle plateforme(au moins dans la classe des ordinateurs 32 bits) il vous suffit de recompiler le code source dans le code informatique cible.

Bien sûr, les plus gros problèmes sont liés au noyau système, qui masque complètement les spécificités de l'ordinateur utilisé, mais dépend lui-même de ces spécificités. Grâce à une séparation réfléchie des composants du noyau dépendants de la machine et indépendants de la machine (apparemment, du point de vue des développeurs de systèmes d'exploitation, il s'agit de la plus grande réussite des développeurs du noyau UNIX traditionnel), il a été possible de réaliser que la partie principale du noyau ne dépend pas des caractéristiques architecturales de la plate-forme cible, est entièrement écrite en C et n'a besoin d'être recompilée que pour être portée sur une nouvelle plate-forme.

Cependant, une partie relativement petite du noyau dépend de la machine et est écrite dans un mélange de C et du langage assembleur du processeur cible. Lors du portage d'un système sur une nouvelle plate-forme, il est nécessaire de réécrire cette partie du noyau en utilisant le langage assembleur et en tenant compte des spécificités du matériel cible. Les parties du noyau dépendantes de la machine sont bien isolées de la partie principale indépendante de la machine, et avec une bonne compréhension de l'objectif de chaque composant dépendant de la machine, la réécriture de la partie dépendante de la machine est principalement une tâche technique (bien qu'elle nécessite des compétences en programmation).

La partie dépendant de la machine du noyau UNIX traditionnel comprend les composants suivants :

promotion et initialisation du système à un niveau bas (alors que cela dépend des caractéristiques du matériel);

traitement primaire des interruptions internes et externes ;

gestion de la mémoire (dans la partie relative aux fonctionnalités de prise en charge matérielle de la mémoire virtuelle) ;

basculer le contexte des processus entre les modes utilisateur et noyau ;

les parties spécifiques à la plate-forme cible des pilotes de périphérique.

4.2 Fonctions de base du noyau

Les principales fonctions du noyau UNIX OS sont les suivantes :

(a) Initialisation du système - fonction de démarrage et de démarrage. Le noyau fournit un bootstrap qui charge le noyau complet dans la mémoire de l'ordinateur et démarre le noyau.

(b) Gestion des processus et des threads — La fonction de création, d'arrêt et de suivi des processus et des threads existants ("processus" s'exécutant sur la mémoire virtuelle partagée). Étant donné qu'UNIX est un système d'exploitation multiprocesseur, le noyau fournit une séparation entre processus en cours d'exécution le temps du processeur (ou les processeurs dans les systèmes multiprocesseurs) et d'autres ressources informatiques pour créer le sentiment externe que les processus s'exécutent réellement en parallèle.

(c) La gestion de la mémoire est la fonction de mapper la mémoire virtuelle pratiquement illimitée des processus à la RAM physique d'un ordinateur, qui est de taille limitée. Le composant noyau correspondant assure l'utilisation partagée des mêmes zones de RAM par de multiples processus utilisant la mémoire externe.

(d) Gestion de fichiers - une fonction qui implémente l'abstraction du système de fichiers - la hiérarchie des répertoires et des fichiers. Les systèmes de fichiers UNIX prennent en charge plusieurs types de fichiers. Certains fichiers peuvent contenir des données ASCII, d'autres correspondent à des périphériques externes. Le système de fichiers stocke les fichiers objets, les fichiers exécutables, etc. Les fichiers sont généralement stockés sur des périphériques de stockage externes ; l'accès à ceux-ci est fourni au moyen du noyau. Dans le monde UNIX, il existe plusieurs types d'organisation du système de fichiers. Les versions modernes du système d'exploitation UNIX prennent en charge simultanément la plupart des types de systèmes de fichiers.

(e) Moyens de communication - une fonction qui permet d'échanger des données entre des processus exécutés à l'intérieur d'un même ordinateur (IPC - Inter-Process Communications), entre des processus exécutés dans différents nœuds d'un réseau de transmission de données local ou mondial, ainsi qu'entre des processus et les pilotes de périphériques externes...

(f) Interface de programmation - une fonction qui permet d'accéder aux capacités du noyau à partir de processus utilisateur basés sur le mécanisme d'appels système, conçue comme une bibliothèque de fonctions.

4.3 Principes d'interaction avec le noyau

Tout système d'exploitation maintient un mécanisme qui permet aux programmes utilisateur de demander des services au noyau du système d'exploitation. Dans les systèmes d'exploitation du plus célèbre ordinateur soviétique BESM-6, les moyens de communication correspondants avec le noyau étaient appelés extracodes, dans les systèmes d'exploitation IBM, ils étaient appelés macros système, etc. Sur les systèmes d'exploitation UNIX, ces fonctions sont appelées appels système.

Le nom ne change pas le sens, qui est que pour accéder aux fonctions du noyau du système d'exploitation, des "commandes spéciales" du processeur sont utilisées, lorsqu'elles sont exécutées, un type spécial d'interruption interne du processeur se produit, qui le transfère au noyau mode (dans la plupart des systèmes d'exploitation modernes, ce type d'interruption est appelé trap - trap). Lors du traitement de telles interruptions (déchiffrement), le noyau du système d'exploitation reconnaît que, en fait, l'interruption est une demande au noyau du programme utilisateur pour effectuer certaines actions, sélectionne les paramètres d'appel et les traite, après quoi il effectue un "retour de interruption", reprise de l'exécution normale du programme utilisateur ...

Il est clair que les mécanismes spécifiques de levée d'interruptions internes à l'initiative du programme utilisateur diffèrent selon les architectures matérielles. Étant donné qu'UNIX s'efforce de fournir un environnement dans lequel les programmes utilisateur pourraient être entièrement mobiles, une couche supplémentaire était nécessaire pour masquer les spécificités d'un mécanisme de déclenchement d'interruption interne particulier. Ce mécanisme est fourni par la bibliothèque d'appels système.

Pour l'utilisateur, la bibliothèque d'appels système est une bibliothèque ordinaire de fonctions pré-implémentées du système de programmation C. En programmation C, l'utilisation de n'importe quelle fonction de la bibliothèque d'appels système n'est pas différente de l'utilisation d'une fonction native ou de la bibliothèque C. Cependant, dans toute fonction d'une bibliothèque d'appels système spécifique, il existe un code qui est, de manière générale, spécifique à une plate-forme matérielle donnée.

4.4 Principes de gestion des interruptions

Bien entendu, le mécanisme de gestion des interruptions interne et externe utilisé dans les systèmes d'exploitation dépend principalement du type de support matériel pour la gestion des interruptions fourni par une plate-forme matérielle particulière. Heureusement, à l'heure actuelle (et depuis un certain temps déjà), les principaux fabricants d'ordinateurs se sont de facto mis d'accord sur des mécanismes d'interruption de base.

Si l'on ne parle pas très précisément et spécifiquement, l'essence du mécanisme adopté aujourd'hui est que chaque interruption possible du processeur (qu'il s'agisse d'une interruption interne ou externe) correspond à une certaine adresse fixe de RAM physique. Au moment où le processeur est autorisé à interrompre en raison de la présence d'une demande d'interruption interne ou externe, il y a un transfert matériel de contrôle vers une cellule de RAM physique avec l'adresse correspondante - généralement l'adresse de cette cellule est appelée " vecteur d'interruption" (en règle générale, les demandes d'interruption interne, c'est-à-dire (c'est-à-dire que les demandes provenant directement du processeur sont satisfaites immédiatement).

L'activité du système d'exploitation est de placer le code du programme dans les cellules correspondantes de la RAM qui assure le traitement initial de l'interruption et initie le traitement complet.

Fondamentalement, UNIX OS adopte une approche générale. Dans le vecteur d'interruption correspondant à l'interruption externe, c'est-à-dire interruption d'un périphérique externe, contient des instructions qui définissent le niveau d'exécution du processeur (le niveau d'exécution détermine à quelles interruptions externes le processeur doit répondre immédiatement) et transfère au programme de traitement d'interruption complet dans le pilote de périphérique correspondant. Pour une interruption interne (par exemple, une interruption initiée par un programme utilisateur lorsque la page requise de mémoire virtuelle n'est pas dans la mémoire principale, lorsqu'une exception se produit dans un programme utilisateur, etc.) ou une interruption de temporisation, le vecteur d'interruption contient un transition vers le programme du noyau UNIX correspondant.

5. Contrôle E/S

Traditionnellement, dans le système d'exploitation UNIX, il existe trois types d'organisation des E/S et, par conséquent, trois types de pilotes. Block I / O est principalement destiné à travailler avec des répertoires et des fichiers normaux dans le système de fichiers, qui, à un niveau de base, ont une structure de blocs. Au niveau utilisateur, il est désormais possible de travailler avec des fichiers en les mappant directement sur des segments de mémoire virtuelle. Cette capacité est considérée comme la couche supérieure du bloc d'E/S. À un niveau inférieur, les E/S de bloc sont prises en charge par les pilotes de bloc. Le bloc I/O est également pris en charge par la mise en mémoire tampon du système.

Les E/S symboliques sont utilisées pour les échanges directs (sans tampon) entre l'espace d'adressage de l'utilisateur et l'équipement correspondant. Le support du noyau commun à tous les pilotes de caractères est de fournir des fonctions de transfert de données entre les espaces d'adressage utilisateur et noyau.

Enfin, les E/S en streaming sont similaires aux E/S de caractères, mais en raison de la possibilité d'inclure des modules de traitement intermédiaires dans le flux, elles sont beaucoup plus flexibles.

5.1 Principes de la mise en mémoire tampon des E/S système

La manière traditionnelle de réduire le surcoût lors de l'exécution d'échanges avec des dispositifs de mémoire externes avec une structure de bloc est la mise en mémoire tampon d'E/S de bloc. Cela signifie que tout bloc du périphérique mémoire externe est d'abord lu dans un tampon de la zone mémoire principale, appelé cache système sous UNIX OS, et à partir de là, en tout ou en partie (selon le type d'échange), il est copié dans l'espace utilisateur correspondant.

Les principes d'organisation du mécanisme de mise en mémoire tampon traditionnel sont, tout d'abord, qu'une copie du contenu d'un bloc est conservée dans la mémoire tampon du système jusqu'à ce qu'il devienne nécessaire de la remplacer en raison d'un manque de mémoire tampon (une variante de l'algorithme LRU est utilisée pour organiser la politique de remplacement). Deuxièmement, lors de l'écriture d'un bloc quelconque du dispositif de mémoire externe, seule la mise à jour (ou la formation et le remplissage) du tampon de cache est réellement effectuée. L'échange réel avec le périphérique se produit soit lorsque le tampon est éclaté en raison de l'écrasement de son contenu, soit lorsqu'un appel système spécial de synchronisation (ou fsync) est effectué, ce qui est pris en charge spécifiquement pour forcer les tampons de cache mis à jour vers la mémoire externe.

Ce schéma de mise en mémoire tampon traditionnel est entré en conflit avec les outils de gestion de mémoire virtuelle développés dans les systèmes d'exploitation UNIX modernes et, en particulier, avec le mécanisme de mappage de fichiers sur des segments de mémoire virtuelle. Par conséquent, System V Release 4 a introduit un nouveau schéma de mise en mémoire tampon, qui est actuellement utilisé en parallèle avec l'ancien schéma.

L'essence du nouveau schéma est qu'au niveau du noyau, le mécanisme de mappage des fichiers aux segments de mémoire virtuelle est en fait reproduit. Tout d'abord, rappelez-vous que le noyau UNIX s'exécute en effet dans sa propre mémoire virtuelle. Cette mémoire a une structure plus complexe, mais fondamentalement la même que la mémoire virtuelle de l'utilisateur. En d'autres termes, la mémoire virtuelle du noyau est paginée par segments et, avec la mémoire virtuelle des processus utilisateurs, est prise en charge par un sous-système commun de gestion de mémoire virtuelle. Il s'ensuit, deuxièmement, que presque toutes les fonctions fournies par le noyau pour les utilisateurs peuvent être fournies par certains composants du noyau pour ses autres composants. En particulier, cela s'applique à la possibilité de mapper des fichiers sur des segments de mémoire virtuelle.

Le nouveau schéma de mise en mémoire tampon dans le noyau UNIX est principalement basé sur le fait que presque rien de spécial n'a besoin d'être fait pour fournir la mise en mémoire tampon. Lorsqu'un des processus utilisateurs ouvre un fichier qui n'a pas encore été ouvert, le noyau crée un nouveau segment et connecte le fichier à ouvrir à ce segment. Après cela (que le processus utilisateur travaille avec le fichier en mode traditionnel en utilisant les appels système de lecture et d'écriture ou connecte le fichier à un segment de sa mémoire virtuelle) au niveau du noyau, le travail sera effectué avec le segment du noyau auquel le fichier est connecté au niveau noyaux. L'idée principale de la nouvelle approche est de combler le fossé entre la gestion de la mémoire virtuelle et la mise en mémoire tampon à l'échelle du système (cela aurait dû être fait il y a longtemps, car il est évident que la mise en mémoire tampon principale du système d'exploitation devrait être effectuée par le composant de gestion de la mémoire virtuelle).

Pourquoi l'ancien mécanisme de mise en mémoire tampon ne peut-il pas être abandonné ? Le fait est que le nouveau schéma suppose la présence d'un adressage continu au sein de l'objet mémoire externe (il doit y avoir un isomorphisme entre les objets mappés et mappés). Cependant, lors de l'organisation des systèmes de fichiers, UNIX OS a une allocation de mémoire externe assez difficile, ce qui est particulièrement vrai pour les i-nodes. Par conséquent, certains blocs de mémoire externe doivent être considérés comme isolés, et il s'avère plus rentable pour eux d'utiliser l'ancien schéma de mise en mémoire tampon (bien que, peut-être, dans les versions UNIX de demain, il sera possible de passer complètement à un nouveau système unifié schème).

5.2 Appels système pour le contrôle des E/S

Pour accéder (c'est-à-dire pouvoir effectuer des opérations d'E/S ultérieures) à un fichier de toute nature (y compris les fichiers spéciaux), un processus utilisateur doit d'abord se connecter au fichier à l'aide de l'un des éléments open, creat, dup ou pipe appels système.

La séquence d'actions de l'appel système open (chemin, mode) est la suivante :

la cohérence des paramètres d'entrée (principalement liés aux drapeaux du mode d'accès au fichier) est analysée ;

un espace est alloué ou situé pour le descripteur de fichier dans la zone de données système du processus (zone u);

dans la zone à l'échelle du système, l'espace existant est alloué ou situé pour accueillir le descripteur de fichier système (structure de fichier) ;

l'archive du système de fichiers est recherchée pour un objet nommé "chemin" et un descripteur de fichier au niveau du système de fichiers est généré ou trouvé (vnode en termes UNIX V System 4);

le vnode est lié à la structure de fichier précédemment formée.

Les appels système open et creat sont (presque) fonctionnellement équivalents. Tout fichier existant peut être ouvert avec l'appel système creat, et tout nouveau fichier peut être créé à l'aide de l'appel système ouvert. Cependant, en ce qui concerne l'appel système creat, il est important de souligner que, lorsqu'il est utilisé naturellement (pour créer un fichier), cet appel système crée une nouvelle entrée dans le répertoire approprié (comme spécifié par le nom de chemin) et crée et initialise un nouveau i-node en conséquence.

Enfin, l'appel système dup (duplicate) crée un nouveau descripteur de fichier pour un fichier déjà ouvert. Cet appel système spécifique à UNIX est uniquement à des fins de redirection d'E/S). Sa mise en œuvre consiste dans le fait qu'un nouveau descripteur de fichier ouvert est formé dans la région u de l'espace système du processus utilisateur, contenant le descripteur de fichier nouvellement formé (un entier), mais se référant à la structure de fichier déjà existante à l'échelle du système. et contenant les mêmes signes et indicateurs qui correspondent au fichier échantillon ouvert.

D'autres appels système importants sont les appels système de lecture et d'écriture. L'appel système read se fait comme ceci :

la table de fichiers à l'échelle du système contient un descripteur du fichier spécifié, et il est déterminé si un appel de ce processus à ce fichier dans le mode spécifié est légal ;

pendant un certain temps, un verrou de synchronisation est établi sur le vnode de ce fichier (le contenu du descripteur ne doit pas changer aux moments critiques de l'opération de lecture) ;

la lecture réelle est effectuée à l'aide de l'ancien ou du nouveau mécanisme de mise en mémoire tampon, après quoi les données sont copiées pour devenir disponibles dans l'espace d'adressage de l'utilisateur.

L'opération d'écriture est effectuée de manière similaire, mais modifie le contenu du tampon du pool de mémoire tampon.

L'appel système de fermeture provoque la déconnexion du pilote du processus utilisateur correspondant et (dans le cas de la dernière fermeture du périphérique) définit l'indicateur "pilote libre" à l'échelle du système.

Enfin, un autre appel système "spécial", ioctl, est pris en charge pour les fichiers spéciaux. C'est le seul appel système qui est fourni pour les fichiers spéciaux et n'est pas fourni pour les autres types de fichiers. En fait, l'appel système ioctl vous permet d'étendre arbitrairement l'interface de n'importe quel pilote. Les paramètres ioctl incluent un opcode et un pointeur vers une zone mémoire du processus utilisateur. L'intégralité de l'interprétation de l'opcode et des paramètres spécifiques correspondants est effectuée par le driver.

Naturellement, étant donné que les pilotes sont principalement destinés à contrôler des périphériques externes, le code du programme du pilote doit contenir des moyens appropriés pour gérer les interruptions de périphérique. Une routine d'interruption individuelle dans le pilote est appelée à partir du noyau du système d'exploitation. De même, une entrée "timeout" peut être déclarée dans le pilote, qui est accessible par le noyau lorsque le temps précédemment commandé par le pilote expire (un tel contrôle de temps est nécessaire lors du contrôle de périphériques pas trop intelligents).

Le schéma général de l'organisation de l'interface des pilotes est illustré à la figure 3.5. Comme le montre cette figure, du point de vue des interfaces et du contrôle à l'échelle du système, il existe deux types de pilotes - caractère et bloc. Du point de vue de l'organisation interne, un autre type de pilotes se démarque - les pilotes de flux. Cependant, les pilotes de flux ne diffèrent pas des pilotes de caractères en termes d'interface externe.

6. Interfaces et points d'entrée des pilotes

6.1 Bloquer les pilotes

Les pilotes de bloc sont destinés à la maintenance de périphériques externes avec une structure de bloc (disques magnétiques, bandes, etc.) et diffèrent des autres en ce qu'ils sont développés et exécutés à l'aide de la mise en mémoire tampon du système. En d'autres termes, ces pilotes passent toujours par le pool de mémoire tampon du système. Comme vous pouvez le voir sur la figure 3.5, tout appel à un pilote de bloc pour la lecture ou l'écriture passe toujours par un prétraitement, qui consiste à essayer de trouver une copie du bloc souhaité dans le pool de tampons.

Si une copie du bloc requis ne se trouve pas dans le pool de tampons, ou si pour une raison quelconque, il est nécessaire de remplacer le contenu d'un tampon mis à jour, le noyau UNIX OS appelle la procédure de stratégie du pilote de bloc correspondant. Strategy fournit une interface standard entre le noyau et le pilote. A l'aide de routines de bibliothèque d'écriture de pilotes, la procédure de stratégie peut mettre en file d'attente des échanges avec l'appareil, par exemple, pour optimiser le déplacement des têtes magnétiques sur le disque. Tous les échanges effectués par le pilote de bloc sont effectués avec de la mémoire tampon. La réécriture des informations nécessaires dans la mémoire du processus utilisateur correspondant est effectuée par les programmes du noyau qui gèrent la gestion des tampons

6.2 Pilotes de caractères

Les pilotes de caractères sont principalement destinés à servir des périphériques qui sont échangés caractère par caractère ou des chaînes de caractères de taille variable. Un exemple typique de périphérique de caractères est une simple imprimante qui accepte un caractère à la fois.

Les pilotes de caractères n'utilisent pas la mise en mémoire tampon du système. Ils copient directement les données de la mémoire de processus utilisateur lors de l'exécution d'opérations d'écriture, ou vers la mémoire de processus utilisateur lors de l'exécution d'opérations de lecture, en utilisant leurs propres tampons.

Il est à noter qu'il est possible de prévoir une interface caractères pour un dispositif bloc. Dans ce cas, le pilote de bloc utilise les capacités supplémentaires de la procédure de stratégie pour permettre l'échange sans utiliser la mise en mémoire tampon du système. Pour un pilote doté à la fois d'interfaces bloc et caractère, deux fichiers spéciaux, bloc et caractère, sont stockés dans le système de fichiers. A chaque appel, le conducteur reçoit des informations sur le mode dans lequel il est utilisé.

6.3 Pilotes de flux

L'objectif principal du mécanisme de flux est d'augmenter la modularité et la flexibilité des pilotes avec une logique interne complexe (surtout, cela s'applique aux pilotes qui implémentent des protocoles réseau). La spécificité de ces pilotes est que la plupart du code du programme ne dépend pas des caractéristiques du périphérique matériel. De plus, il est souvent avantageux de combiner des morceaux de code de différentes manières.

Tout cela a conduit à l'émergence d'une architecture de pilote de flux, qui est un pipeline bidirectionnel de modules de traitement. Au début du pipeline (le plus proche du processus utilisateur) se trouve l'en-tête du flux, auquel l'utilisateur accède principalement. À la fin du pipeline (le plus proche du périphérique) se trouve le pilote de périphérique standard. Un nombre arbitraire de modules de traitement peut être localisé dans l'espace, chacun étant conçu conformément à l'interface de streaming obligatoire.

7. Commandes et utilitaires

Lorsque vous travaillez de manière interactive dans l'environnement du système d'exploitation UNIX, utilisez divers utilitaires ou commandes shell externes. Beaucoup de ces utilitaires sont des programmes aussi complexes que le shell lui-même (et soit dit en passant, le shell lui-même est l'un des utilitaires qui peuvent être invoqués à partir de la ligne de commande).

7.1 Organisation des commandes sous UNIX OS

Pour créer une nouvelle commande, il suffit de suivre les règles de la programmation C. Chaque programme C bien formé commence son exécution avec la fonction principale. Cette fonction "semi-système" a une interface standard, qui est la base pour organiser les commandes qui peuvent être invoquées dans l'environnement shell. Les commandes externes sont exécutées par le shell à l'aide d'un ensemble d'appels système fork et de l'une des variantes exec. Les paramètres de l'appel système exec incluent un ensemble de chaînes de texte. Cet ensemble de chaînes de texte est passé à l'entrée de la fonction principale du programme en cours d'exécution.

Plus précisément, la fonction principale reçoit deux paramètres, argc (le nombre de chaînes de texte à passer) et argv (un pointeur vers un tableau de pointeurs vers des chaînes de texte). Un programme qui prétend être utilisé comme une commande shell doit avoir une interface externe bien définie (les paramètres sont généralement entrés à partir du terminal) et doit surveiller et analyser correctement les paramètres d'entrée.

De plus, pour se conformer au style shell, un tel programme ne doit pas lui-même écraser les fichiers correspondant à l'entrée standard, à la sortie standard et à la sortie d'erreur standard. Ensuite, la commande peut être redirigée E/S de la manière habituelle, et elle peut être incluse dans des pipelines.

7.2 Redirection des E/S et de la tuyauterie

Comme vous pouvez le voir dans la dernière phrase du paragraphe précédent, vous n'avez rien de spécial à faire pour fournir une redirection d'E/S et des pipelines lors de la programmation des instructions. Il suffit de ne pas toucher aux trois descripteurs de fichiers initiaux et de travailler correctement avec ces fichiers, à savoir la sortie dans un fichier avec le descripteur stdout, les données d'entrée du fichier stdin et la sortie des messages d'erreur dans le fichier stderror.

7.3 Commandes intégrées, bibliothèques et personnalisées

Les commandes intégrées font partie du code shell. Ils fonctionnent comme des routines d'interprétation et ne peuvent pas être remplacés ou redéfinis. La syntaxe et la sémantique des commandes intégrées sont définies dans le langage de commande correspondant.

Les commandes de bibliothèque font partie du logiciel système. Il s'agit d'un ensemble de programmes exécutables (utilitaires) fournis avec le système d'exploitation. La plupart de ces programmes (tels que vi, emacs, grep, find, make, etc.) sont extrêmement utiles dans la pratique, mais leur discussion dépasse le cadre de ce cours (il existe des livres épais séparés).

Une commande utilisateur est tout programme exécutable organisé conformément aux exigences énoncées dans Ainsi, tout utilisateur UNIX peut étendre indéfiniment le répertoire de commandes externes de son langage de commande (par exemple, vous pouvez écrire votre propre interpréteur de commandes).

7.4 Programmation en langage de commande

N'importe laquelle des variantes mentionnées du langage shell peut en principe être utilisée comme langage de programmation. Il y a beaucoup d'utilisateurs UNIX qui écrivent des programmes shell assez sérieux. Pour la programmation, il vaut mieux utiliser des langages de programmation (C, C++, Pascal, etc.) plutôt que des langages de commandes.


8. Outils d'interface utilisateur graphique

Bien que de nombreux programmeurs UNIX professionnels préfèrent aujourd'hui utiliser les moyens traditionnels d'interaction par ligne avec le système, l'utilisation généralisée de terminaux graphiques couleur relativement bon marché avec une qualité haute résolution a conduit au fait que tous les systèmes d'exploitation UNIX modernes prennent en charge les interfaces utilisateur graphiques avec le système. , et les utilisateurs disposent d'outils pour développer des interfaces graphiques avec les programmes qu'ils développent. Du point de vue de l'utilisateur final, les outils d'interface graphique pris en charge dans différentes versions du système d'exploitation UNIX, ainsi que dans d'autres systèmes (par exemple, MS Windows ou Windows NT), sont à peu près les mêmes dans leur style.

Tout d'abord, dans tous les cas, le mode de fonctionnement multi-fenêtres avec l'écran du terminal est pris en charge. A tout moment, l'utilisateur peut créer une nouvelle fenêtre et l'associer au programme souhaité qui fonctionne avec cette fenêtre comme avec un terminal séparé. Les fenêtres peuvent être déplacées, redimensionnées, fermées temporairement, etc.

Deuxièmement, tous les types d'interfaces graphiques modernes prennent en charge le contrôle de la souris. Dans le cas du système d'exploitation UNIX, il s'avère souvent que le clavier de terminal habituel n'est utilisé que lors du passage à l'interface de ligne traditionnelle (bien que dans la plupart des cas, l'un des interpréteurs de commandes de la famille shell s'exécute dans au moins une fenêtre de terminal).

Troisièmement, une telle prolifération du style de travail « souris » est possible grâce à l'utilisation d'outils d'interface basés sur des icônes (icônes) et des menus. Dans la plupart des cas, un programme exécuté dans une fenêtre invite l'utilisateur à sélectionner une fonction qu'il exécute soit en affichant un ensemble d'images symboliques de fonctions possibles (icônes) dans la fenêtre, soit en proposant un menu à plusieurs niveaux. Dans tous les cas, pour une sélection plus poussée, il suffit de contrôler le curseur de la fenêtre correspondante à l'aide de la souris.

Enfin, les interfaces graphiques modernes sont "conviviales", offrant une aide interactive immédiate en toute occasion. (Il serait probablement plus exact de dire qu'un bon style de programmation d'interface graphique est celui qui fournit réellement de telles astuces.)

Après avoir listé toutes ces propriétés communes moyens modernes Une question naturelle peut se poser : s'il existe une telle uniformité dans le domaine des interfaces graphiques, quelle particularité peut-on dire des interfaces graphiques dans l'environnement UNIX OS ? La réponse est assez simple. Oui, l'utilisateur final dans n'importe quel système aujourd'hui traite approximativement le même ensemble de capacités d'interface, mais dans différents systèmes, ces capacités sont obtenues de différentes manières. Comme d'habitude, le système d'exploitation UNIX a l'avantage de technologies standardisées qui permettent la création d'applications mobiles graphiques.

8. Principes de protection

Depuis que le système d'exploitation UNIX a été conçu dès sa création comme un système d'exploitation multi-utilisateurs, il a toujours eu un problème urgent d'autoriser l'accès de divers utilisateurs aux fichiers du système de fichiers. L'autorisation d'accès fait référence aux actions du système qui permettent ou non à un utilisateur donné d'accéder à ce fichier, en fonction des droits d'accès de l'utilisateur et des restrictions d'accès définies pour le fichier. Le schéma d'autorisation d'accès utilisé dans UNIX OS est si simple et pratique et en même temps si puissant qu'il est devenu la norme de facto des systèmes d'exploitation modernes (qui ne prétendent pas être des systèmes avec une sécurité à plusieurs niveaux).

8.1 ID utilisateur et groupe d'utilisateurs

Chaque processus UNIX qui s'exécute a un ID utilisateur réel, un ID utilisateur effectif et un ID utilisateur enregistré qui lui est associé. Tous ces identifiants sont définis à l'aide de l'appel système setuid, qui ne peut être effectué qu'en mode superutilisateur. De même, il existe trois ID de groupe d'utilisateurs associés à chaque processus : ID de groupe réel, ID de groupe effectif et ID de groupe enregistré. Ces identifiants sont définis par l'appel système privilégié setgid.

Lorsqu'un utilisateur se connecte au système, le programme de connexion vérifie que l'utilisateur est enregistré dans le système et connaît le mot de passe correct (s'il est défini), crée un nouveau processus et lance le shell requis pour l'utilisateur donné. Mais avant cela, login définit les identifiants d'utilisateur et de groupe pour le processus nouvellement créé, en utilisant les informations stockées dans les fichiers /etc/passwd et /etc/group. Une fois que les ID d'utilisateur et de groupe sont associés à un processus, des restrictions de fichier s'appliquent à ce processus. Un processus peut accéder ou exécuter un fichier (si le fichier contient un programme exécutable) uniquement si les restrictions d'accès dans le fichier le lui permettent. Les identifiants associés aux processus sont transmis aux processus qu'il crée, soumis aux mêmes restrictions. Cependant, dans certains cas, un processus peut modifier ses autorisations à l'aide des appels système setuid et setgid, et parfois le système peut modifier les autorisations d'un processus automatiquement.

Considérons, par exemple, la situation suivante. Toute personne, à l'exception du superutilisateur, n'est pas autorisée à écrire dans le fichier /etc/passwd (le superutilisateur peut écrire dans n'importe quel fichier). Ce fichier contient, entre autres, les mots de passe des utilisateurs et chaque utilisateur est autorisé à modifier son mot de passe. Il existe un programme spécial / bin / passwd qui modifie les mots de passe. Cependant, l'utilisateur ne peut pas le faire même avec ce programme, car l'écriture dans le fichier /etc/passwd n'est pas autorisée. Sous UNIX, ce problème est résolu comme suit. L'exécutable peut être spécifié pour définir les ID d'utilisateur et/ou de groupe lors de son exécution. Si un utilisateur demande l'exécution d'un tel programme (à l'aide de l'appel système exec), alors l'ID utilisateur correspondant à l'ID propriétaire du fichier exécutable et/ou l'ID de groupe de ce propriétaire est défini pour le processus correspondant. En particulier, lorsque le programme /bin/passwd est lancé, le processus recevra l'ID de superutilisateur et le programme pourra écrire dans le fichier /etc/passwd.

Pour l'ID utilisateur et l'ID de groupe, l'ID réel est le véritable ID et l'ID effectif est l'ID d'exécution actuel. Si l'ID utilisateur actuel correspond au superutilisateur, alors cet ID et cet ID de groupe peuvent être réinitialisés à n'importe quelle valeur par les appels système setuid et setgid. Si l'identifiant utilisateur courant est différent de l'identifiant superutilisateur, alors les appels système setuid et setgid remplaceront l'identifiant courant par le vrai identifiant (respectivement utilisateur ou groupe).

8.2 Protection des fichiers

Comme il est d'usage dans un système d'exploitation multi-utilisateurs, UNIX maintient un mécanisme uniforme pour contrôler l'accès aux fichiers et aux répertoires du système de fichiers. Tout processus peut accéder à un fichier si et seulement si les droits d'accès décrits dans le fichier correspondent aux capacités de ce processus.

La protection des fichiers contre les accès non autorisés sous UNIX repose sur trois faits. Premièrement, tout processus qui crée un fichier (ou un répertoire) est associé à un identifiant d'utilisateur unique dans le système (UID - User Identifier), qui peut en outre être interprété comme l'identifiant du propriétaire du fichier nouvellement créé. Deuxièmement, il y a une paire d'identifiants associés à chaque processus qui essaie d'accéder au fichier - les identifiants d'utilisateur et de groupe actuels. Troisièmement, chaque fichier est associé de manière unique à son descripteur, l'i-node.

Tout i-node utilisé dans le système de fichiers est toujours associé de manière unique à un et un seul fichier. Le nœud I contient de nombreuses informations diverses (la plupart sont disponibles pour les utilisateurs via les appels système stat et fstat), et parmi ces informations, il y a une partie qui permet au système de fichiers d'évaluer l'autorité d'un processus donné à accéder un fichier donné dans le mode requis.

Les principes généraux de protection sont les mêmes pour tous options existantes systèmes : les informations sur l'i-node incluent l'UID et le GID propriétaire actuel fichier (immédiatement après la création du fichier, les identifiants de son propriétaire actuel sont définis par l'identifiant de processus valide correspondant du créateur, mais peuvent être modifiés ultérieurement par les appels système chown et chgrp). De plus, l'i-node du fichier stocke une échelle qui indique ce que l'utilisateur - son propriétaire peut faire avec le fichier, ce que les utilisateurs du même groupe d'utilisateurs que le propriétaire peuvent faire avec le fichier et ce que les autres peuvent faire avec le fichier fichier. utilisateurs. Les petits détails de la mise en œuvre diffèrent selon les différentes versions du système.

8.3 Future OS prenant en charge l'environnement UNIX OS

Un micronoyau est le noyau minimum d'un système d'exploitation qui sert de base aux extensions modulaires et portables. Apparemment, la plupart des systèmes d'exploitation de la prochaine génération auront des micronoyaux. Cependant, il existe de nombreuses opinions différentes sur la façon d'organiser les services du système d'exploitation par rapport à un micronoyau : comment concevoir des pilotes de périphériques pour qu'ils soient les plus efficaces tout en gardant les fonctions des pilotes aussi indépendantes que possible du matériel ; s'il faut effectuer des opérations non liées au noyau dans l'espace noyau ou l'espace utilisateur ; Vaut-il la peine de conserver les programmes des sous-systèmes existants (par exemple UNIX) ou vaut-il mieux tout laisser tomber et recommencer à zéro.

Le concept de micronoyau a été largement répandu par Next, dont le système d'exploitation utilisait le micronoyau Mach. Un petit noyau privilégié de cet OS, autour duquel se trouvaient des sous-systèmes exécutés en mode utilisateur, aurait théoriquement dû apporter une flexibilité et une modularité sans précédent du système. En pratique, cependant, cet avantage a été quelque peu réduit par la présence d'un serveur monolithique qui implémente le système d'exploitation UNIX BSD 4.3, que Next a choisi d'envelopper le micronoyau Mach. Cependant, la dépendance à Mach a permis d'incorporer la messagerie et un certain nombre de fonctions de service orientées objet pour créer une interface utilisateur finale élégante avec des outils graphiques pour la configuration du réseau, l'administration du système et le développement de logiciels.

Le système d'exploitation à micro-noyau suivant était Windows NT de Microsoft, dans lequel le principal avantage de l'utilisation d'un micro-noyau n'était pas seulement la modularité, mais aussi la portabilité. (Notez qu'il n'y a pas de consensus sur la question de savoir si NT doit être classé comme un système d'exploitation à micronoyau.) NT a été conçu pour fonctionner sur des systèmes mono et multiprocesseurs basés sur des processeurs Intel, Mips et Alpha (et ceux qui viendront après eux). Étant donné que l'environnement NT devait exécuter des programmes écrits pour DOS, Windows, OS/2 et des systèmes compatibles avec Normes Posix Microsoft a utilisé la modularité inhérente à l'approche micronoyau pour créer une structure NT globale qui ne duplique aucun système d'exploitation existant. Chaque système d'exploitation est émulé en tant que module ou sous-système distinct.

Plus tard, des architectures de système d'exploitation à micronoyau ont été annoncées par Novell / USL, l'Open Software Foundation (OSF), IBM, Apple et d'autres. L'un des principaux concurrents de NT dans le système d'exploitation micronoyau est Mach 3.0, un système de l'Université Carnegie Mellon qu'IBM et OSF se sont engagés à commercialiser. (Next utilise actuellement Mach 2.5 comme base pour NextStep, mais envisage également Mach 3.0.) Un autre concurrent est le micronoyau Chorus 3.0 de Chorus Systems, qu'USL a choisi comme base pour les nouvelles implémentations UNIX. Certains micronoyaux seront utilisés par SpringOS de Sun, le successeur orienté objet de Solaris (en supposant que Sun achève SpringOS, bien sûr). Il y a une nette tendance à la transition des systèmes monolithiques vers les systèmes à micro-noyau (ce processus n'est pas simple : IBM a pris du recul et a abandonné la transition vers la technologie à micro-noyau). Soit dit en passant, ce n'est pas du tout une nouvelle pour QNX Software Systems et Unisys, qui produisent des systèmes d'exploitation à micro-noyau à succès depuis plusieurs années. QNX est populaire sur le marché en temps réel, et Unisys CTOS est populaire dans le secteur bancaire. Les deux systèmes profitent avec succès de la modularité inhérente aux systèmes d'exploitation à micronoyau.


Conclusion

Les principales différences entre Unix et les autres OS

Unix se compose d'un noyau avec des pilotes et des utilitaires inclus (programmes externes au noyau). Si vous devez changer la configuration (ajouter un périphérique, changer le port ou interrompre), alors le noyau est reconstruit (lié) à partir des modules objets ou (par exemple, dans FreeBSD) à partir des sources. Ce n'est pas tout à fait vrai. Certains paramètres peuvent être corrigés sans reconstruire. Il existe également des modules de noyau chargeables.

Contrairement à Unix, "Windows (s'il n'est pas précisé lequel, on entend alors 3.11, 95 et NT) et OS/2, lors du démarrage, ils relient en fait les pilotes à la volée. En même temps, la compacité de l'ensemble noyau et la réutilisation du code commun est d'un ordre de grandeur inférieur à De plus, si la configuration système est inchangée, le noyau Unix peut être écrit en ROM sans modification (seule la partie de démarrage du BIOS doit être modifiée) et exécuté _sans_démarrer_ dans la RAM. La compacité du code est particulièrement importante car le noyau et les pilotes ne quittent jamais le système d'exploitation physique. La mémoire ne sera pas échangée sur le disque.

Unix est l'OS le plus multi-plateforme. WindowsNT essaie de l'imiter, mais jusqu'à présent il a échoué - après avoir abandonné MIPS et POWER-PC, W "NT n'est resté que sur deux plates-formes - la traditionnelle i*86 et DEC Alpha. La portabilité des programmes d'une version Unix à l'autre Ignorer les différences dans les implémentations Unix, faire des hypothèses déraisonnables comme « un entier doit faire quatre octets de long » peut nécessiter une refonte majeure, mais plusieurs ordres de grandeur restent plus faciles que de migrer d'OS/2 vers NT, par exemple.

Applications Unix

Unix est utilisé à la fois comme serveur et comme poste de travail. Dans la catégorie des serveurs, il est en concurrence avec MS WindowsNT, Novell Netware, IBM OS/2 Warp Connect, DEC VMS et les systèmes d'exploitation mainframe. Chaque système a son propre domaine d'application, dans lequel il est meilleur que les autres.

WindowsNT est destiné aux administrateurs qui préfèrent une interface conviviale à une utilisation économique des ressources et des performances élevées.

Netware - pour les réseaux où des performances élevées des services de fichiers et d'imprimantes sont nécessaires et où d'autres services ne sont pas si importants. Le principal inconvénient est qu'il est difficile d'exécuter des applications sur le serveur Netware.

OS/2 est bon lorsque vous avez besoin d'un serveur d'applications "léger". Il nécessite moins de ressources que NT, il est plus flexible dans la gestion (même s'il peut être plus difficile à configurer) et le multitâche est très bon. L'autorisation et la différenciation des droits d'accès ne sont pas mises en œuvre au niveau du système d'exploitation, ce qui est plus que compensé par la mise en œuvre au niveau de l'application serveur. (Souvent, cependant, d'autres systèmes d'exploitation font de même.) De nombreuses stations FIDOnet et BBS sont basées sur OS/2.

VMS est un serveur d'applications puissant, en aucun cas inférieur à Unix (et à bien des égards supérieur), mais uniquement pour les plates-formes VAX et Alpha de DEC.

Mainframes - pour servir un très grand nombre d'utilisateurs (de l'ordre de plusieurs milliers). Mais le travail de ces utilisateurs est généralement organisé comme une interaction hôte-terminal plutôt que client-serveur. Le terminal de cette paire n'est plus vraisemblablement pas un client, mais un serveur (World of the Internet, N3, 1996). Les avantages des mainframes incluent une sécurité et une résistance aux pannes plus élevées, et les inconvénients sont le prix correspondant à ces qualités.

Unix est bon pour un administrateur qualifié (ou volontaire), car nécessite la connaissance des principes de fonctionnement des processus qui s'y déroulent. Le multitâche réel et le partage de la mémoire dure garantissent une haute fiabilité du fonctionnement du système, bien que les performances des services de fichiers et d'impression d'Unix soient inférieures à celles de Netware.

Le manque de flexibilité dans l'octroi des droits d'accès utilisateur aux fichiers par rapport à WindowsNT rend difficile l'organisation d'accès groupés aux données (plus précisément aux fichiers) au niveau du système de fichiers, ce qui, à mon avis, est compensé par la simplicité de mise en œuvre , ce qui signifie des exigences matérielles inférieures. Cependant, les applications telles que SQL server résolvent à elles seules le problème de l'accès de groupe aux données, donc la possibilité de refuser l'accès à un _fichier_ à un utilisateur spécifique, qui est absente sous Unix, est clairement redondante à mon avis.

Presque tous les protocoles sur lesquels repose Internet ont été développés pour Unix, en particulier la pile de protocoles TCP/IP a été inventée à l'Université de Berkeley.

La sécurité d'Unix avec une bonne administration (et quand n'est-ce pas ?) n'est en aucun cas inférieure à Novell ou WindowsNT.

Une caractéristique importante d'Unix, qui le rapproche des mainframes, est sa nature multi-terminal, de nombreux utilisateurs peuvent exécuter simultanément des programmes sur la même machine Unix. Si vous n'avez pas besoin d'utiliser des graphiques, vous pouvez vous en tirer avec des terminaux de texte bon marché (spécialisés ou basés sur des PC bon marché) connectés sur des lignes lentes. Seul VMS lui fait concurrence sur ce point. Vous pouvez également utiliser des terminaux X graphiques lorsqu'il y a des fenêtres de processus s'exécutant sur différentes machines sur le même écran.

MS Windows*, IBM OS/2, Macintosh et Acorn RISC-OS concourent dans la catégorie des stations de travail Unix.

Windows - pour ceux qui apprécient la compatibilité plus d'efficacité ; pour ceux qui sont prêts à acheter une grande quantité de mémoire, d'espace disque et de mégahertz ; pour ceux qui aiment sans entrer dans l'essentiel, en cliquant avec la souris sur les boutons de la fenêtre. Certes, tôt ou tard, vous devrez encore étudier les principes du système et des protocoles, mais il sera alors trop tard - le choix est fait. Un avantage important de Windows est la possibilité de voler un tas de logiciels.

OS/2 est pour les amateurs d'OS/2. :-) Bien que selon certaines sources, OS/2 fonctionne mieux que d'autres avec les mainframes et les réseaux IBM.

Macintosh - pour les travaux graphiques, d'édition et musicaux, ainsi que pour ceux qui aiment une interface claire et belle et ne veulent pas (ne peuvent pas) comprendre les détails du fonctionnement du système.

RISC-OS, flashé en ROM, permet de ne pas perdre de temps à installer le système d'exploitation et à le récupérer après des pannes. De plus, presque tous les programmes qui en dépendent utilisent les ressources de manière très économique, ils n'ont donc pas besoin d'être échangés et fonctionnent très rapidement.

Unix fonctionne à la fois sur les PC et sur les postes de travail puissants avec des processeurs RISC, des systèmes de CAO vraiment puissants sont écrits pour Unix et Systèmes d'information géographique... En raison de son évolutivité multiplateforme, Unix est d'un ordre de grandeur supérieur à tout autre système d'exploitation, selon certains auteurs.


Bibliographie

1. Manuel Kuznetsov S.D. "Système d'exploitation UNIX" 2003 ;

2. Polyakov A.D. « UNIX 5e édition sur x86, ou n'oubliez pas l'histoire » ;

3. Karpov D. Yu. "UNIX" 2005 ;

4. Fedorchuk A.V. Maîtrise Unix, 2006

5. Matériaux du site http://www.citforum.ru/operating_systems/1-16 ;

MINISTÈRE DE L'ÉDUCATION ET DES SCIENCES DE LA FÉDÉRATION DE RUSSIE AGENCE FÉDÉRALE POUR L'ÉDUCATION ÉTABLISSEMENT D'ÉDUCATION D'ENSEIGNEMENT SUPÉRIEUR PROFESSIONNEL RADIO D'ÉTAT DE TAGANROG

Système d'exploitation UNIX

La date de naissance officielle du système d'exploitation UNIX considérer le 1er janvier 1970. C'est à partir de ce moment que tout système UNIX compte son temps système. C'est très long pour un système d'exploitation. Aujourd'hui, malgré l'émergence de nombreux autres systèmes d'exploitation basés sur des principes différents, UNIX est fermement en tête.

Les principales caractéristiques d'UNIX, permettant de comprendre les raisons de la longévité de ce système, sont les suivantes.

Le code système est écrit dans un langage C de haut niveau, ce qui facilite sa compréhension, sa modification et son portage sur d'autres plates-formes matérielles.

Malgré la variété des versions UNIX, la base de toute la famille est essentiellement la même architecture et un certain nombre d'interfaces standard.

UNIX dispose d'un ensemble simple mais puissant d'interfaces utilisateur standard.

L'interface UNIX Unified File System permet d'accéder non seulement aux données stockées sur des disques, mais également aux terminaux, imprimantes, bandes, CD, au réseau et même à la mémoire.

Un grand nombre d'applications différentes ont été développées pour le système UNIX - des éditeurs de texte les plus simples aux puissants systèmes de gestion de bases de données.

En termes généraux, le système d'exploitation UNIX peut être représenté par un modèle à deux niveaux, comme le montre la Fig. 8.1
.

Au centre se trouve noyau système (noyau)... Le noyau interagit directement avec le matériel de l'ordinateur, isolant les programmes d'application des caractéristiques de son architecture. Le noyau comprend des programmes qui implémentent un ensemble de services fournis aux programmes d'application. Les services du noyau incluent les opérations d'E/S, la création et la gestion de processus, la synchronisation de processus, etc. Le niveau suivant du modèle est constitué par les services système qui fournissent interface utilisateur SE UNIX. Le schéma d'interaction avec le noyau pour les applications et les tâches système est le même.

Fonctions du système d'exploitation UNIX

Le système d'exploitation UNIX interagit avec les ressources matérielles et logicielles de l'ordinateur en effectuant fonctions suivantes:

    gestion de l'équipement;

    la gestion des ressources;

    surveillance du système;

Gestion des équipements

Les programmes d'application n'ont pas la capacité de contrôler directement le matériel informatique. Seul le système d'exploitation remplit les fonctions de contrôle de l'équipement, permettant aux applications et autres programmes d'accéder aux périphériques (éliminant ainsi le besoin de connaître les spécificités du contrôle d'un tel périphérique). Le concept d'indépendance des programmes par rapport à une implémentation matérielle spécifique embarquée dans le système d'exploitation est l'un des éléments importants pour assurer la portabilité du système d'exploitation UNIX, ce qui lui permet d'être largement utilisé dans une variété de configurations matérielles.

La gestion des ressources

Le système d'exploitation UNIX gère la répartition des ressources informatiques entre plusieurs utilisateurs effectuant plusieurs tâches en même temps, travaillant souvent avec différents objets, prenant en charge les modes de fonctionnement multi-tâches et multi-utilisateurs. Le multitâche permet à un seul utilisateur d'exécuter plusieurs programmes en même temps, le CPU et la RAM étant partagés entre plusieurs processus.

Le mode multi-utilisateur prend en charge la possibilité d'exécuter plusieurs utilisateurs en même temps, en partageant les ressources informatiques entre eux, y compris les périphériques coûteux tels que les imprimantes ou les traceurs. Ce mode de fonctionnement s'avère plus économique que de combiner plusieurs machines sur lesquelles travaille un utilisateur.

Prise en charge de l'interface utilisateur

Il s'agit d'un moyen de fournir une interaction utilisateur interactive (fournissant un dialogue) avec un système informatique.

Les versions modernes du système d'exploitation UNIX prennent en charge plusieurs types d'interfaces: ligne de commande, menus et interface utilisateur graphique.

Ligne de commande généralement pratique pour les utilisateurs familiarisés avec les fonctions et équipes systèmes. Lorsque vous travaillez avec ce type d'interface, l'utilisateur à l'"invite" (la valeur par défaut pour l'utilisateur est un signe dollar) entre chaque commande à partir du clavier. Cette interface ne fournit pas une « vue » du système, mais elle permet d'exécuter n'importe quelle commande sur le système. Les programmes qui fournissent une telle interface sont appelés shells de commandes(coquille). Il existe de nombreux shells : Bourne shell (sh), Bourne Again Shell (bash), Korn shell (ksh), C shell (csh), Debian Almquist shell (dash), Zsh, etc. Le plus courant est le bash.

Généralement utilisé par les débutants ou les utilisateurs qui ont besoin d'effectuer une configuration sur le système d'exploitation. Souvent, une telle interface sert de guide : elle permet à l'utilisateur de sélectionner une fonction dans une liste (menu) à exécuter par le système. En règle générale, les menus sont organisés sous forme de texte en couches, offrant à l'utilisateur plusieurs choix. Un exemple d'une telle interface est le programme sysadm, qui aide l'administrateur système à configurer et à configurer le système.

Interface utilisateur graphique destiné à la fois aux débutants et aux utilisateurs avancés. Il offre plusieurs façons d'interagir avec un ordinateur : une vue d'ensemble des objets du système représentés par des icônes, l'exécution de commandes en sélectionnant une image graphique (icône) sur l'écran d'affichage à l'aide d'une souris ou d'une boule suiveuse. UNIX OS fournit X.desktop comme interface utilisateur graphique pour travailler avec des terminaux X spéciaux ou le système X Window pour travailler avec des terminaux graphiques classiques.

Fournir un accès à distance à réseau informatique

UNIX OS permet aux utilisateurs d'accéder aux ressources d'autres ordinateurs fonctionnant dans le réseau informatique. Le système d'exploitation contient un ensemble d'applications réseau qui vous permettent d'établir une communication avec un ordinateur distant, de vous enregistrer auprès d'un système distant, de transférer des données entre des ordinateurs du réseau, d'utiliser par email... UNIX prend en charge le réseau déposer Système NFS (Network File System), qui vous permet d'utiliser les commandes du système d'exploitation pour accéder au système de fichiers d'un ordinateur distant.

Composants du système d'exploitation UNIX

Comme mentionné ci-dessus, un système d'exploitation est un ensemble de programmes qui fournit des fonctions de gestion des processus dans le système et met en œuvre l'interface entre les utilisateurs et le matériel du système. Le système UNIX contient trois composants principaux: système de commande, shells et noyau.

Le système d'exploitation UNIX contient plusieurs centaines de commandes qui effectuent des tâches d'organisation et de traitement des données et de contrôle de l'environnement de l'utilisateur. Les commandes elles-mêmes sont des programmes qui exécutent des fonctions spécifiques, nécessitent généralement une entrée minimale et sont relativement rapides à exécuter. La plupart d'entre elles sont disponibles pour tous les utilisateurs, mais certaines commandes ne sont disponibles que pour l'administrateur système, qui est un utilisateur privilégié. Certaines commandes, lorsqu'elles sont exécutées, il est possible de saisir des informations de manière interactive, sont parfois appelées utilitaires... Des exemples d'utilitaires incluent l'éditeur de texte vi et la commande mail pour la gestion du courrier électronique.

Coquilles... Les shells sont communément appelés programmes interactifs qui fournissent une interface utilisateur au noyau du système d'exploitation. Le shell devient le processus utilisateur actif à partir du moment où il se connecte au système jusqu'à ce qu'il se déconnecte. Ces programmes sont des interpréteurs de commandes (parfois appelés processeurs de commandes).

Comme indiqué ci-dessus, UNIX utilise généralement plusieurs shells.

Les shells restreints (rsh et ksh - sous-ensembles du shell Bourne et du shell Korn) sont conçus pour les utilisateurs qui ont besoin de restreindre l'accès au système.

Coeur... Le noyau est le noyau du système d'exploitation, qui fournit des fonctionnalités de base : il crée et gère des processus, alloue de la mémoire et fournit un accès aux fichiers et aux périphériques.

L'interaction des applications avec le noyau se produit via l'interface d'appel système standard. L'interface d'appel système définit le format des demandes de services de base. Un processus demande une fonction noyau de base via un appel système à une procédure noyau spécifique. Le noyau exécute la requête et renvoie les données requises au processus.

Le noyau se compose de trois sous-systèmes principaux:

    1) un sous-système de gestion des processus et de la mémoire ;

    2) sous-système de fichiers ;

    3) sous-système d'entrée/sortie.

Effectue fonctions suivantes:

    création et suppression de processus ;

    répartition des ressources système entre les processus ;

    synchronisation des processus;

    interaction des processus.

Une fonction spéciale du noyau exécutée par le planificateur résout les conflits entre les processus en compétition pour les ressources système.

Fournit une allocation de mémoire entre les processus. S'il n'y a pas assez de mémoire pour tous les processus, le noyau déplace des parties du processus ou plusieurs processus (le plus souvent des processus passifs, en attente d'événements dans le système) vers une zone spéciale du disque (zone "swap"), libérer des ressources pour exécuter des processus (actifs).

Sous-système de fichiers fournit une interface unifiée pour accéder aux données situées sur les lecteurs de disque et les périphériques. Il effectue des opérations de placement et de suppression de fichiers, écrit / lit les données de fichiers et contrôle les autorisations de fichiers.

Exécute les requêtes du sous-système de fichiers et du sous-système de contrôle de processus pour l'accès aux périphériques. Il interagit avec les pilotes de périphérique, qui sont des programmes spéciaux du noyau qui servent des périphériques externes.

Accéder au système UNIX

Pour contacter un système UNIX, vous doit avoir:

    Terminal;

Obtention d'un nom d'enregistrement

Nom d'enregistrement est le nom qu'UNIX utilise pour vérifier si vous êtes un utilisateur autorisé du système lorsqu'il demande l'accès à celui-ci.

Vous devez saisir le nom de connexion à chaque fois que vous souhaitez vous connecter.

Il existe plusieurs règles pour choisir un nom d'enregistrement. En règle générale, le nom comporte de 3 à 8 caractères. Il peut être composé de lettres majuscules ou minuscules, de chiffres, de traits de soulignement, mais ne peut pas commencer par un chiffre.

Cependant, votre nom de connexion peut être spécifique à l'application. Exemples de noms valides :

Communication avec le système UNIX

Si UNIX est installé sur un ordinateur personnel, vous pouvez vous y connecter directement via une console virtuelle textuelle. Mais d'autres options d'accès sont également possibles.

Supposons que le terminal soit directement ou via une ligne téléphonique connecté à un ordinateur. Bien que cette sous-section décrive une procédure de connexion typique, ces instructions peuvent ne pas fonctionner pour votre système. Il existe plusieurs façons de se connecter à un système UNIX via une ligne téléphonique.

Pour communiquer avec le système, vous devez allumer le terminal.

S'il est directement connecté à l'ordinateur, une invite apparaîtra immédiatement dans le coin supérieur gauche :

Si un ordinateur personnel configuré pour fonctionner en réseau utilisant la famille de protocoles TCP/IP est utilisé comme terminal, il est nécessaire d'établir une communication avec l'ordinateur sur lequel le système d'exploitation UNIX est installé. Cela peut être fait de plusieurs manières, par exemple en utilisant application réseau telnet, qui est disponible dans les salles d'opération Systèmes Windows ou en utilisant les moyens d'accès à Internet. Veuillez noter qu'il s'agit d'un protocole non sécurisé qui n'est pratiquement pas utilisé de nos jours. Secure Shell (SSH) est une alternative moderne.

Exemple.

Un ordinateur personnel avec le système d'exploitation Windows NT configuré pour le fonctionnement en réseau est utilisé comme terminal. Vous devez vous enregistrer sur un système UNIX.

Entrées et actions requises :

    pour établir la communication avec le système d'exploitation UNIX, vous devez connaître le nom de réseau de l'ordinateur distant ou son adresse IP (par exemple, 192.168.2.19) ;

    recherchez l'application telnet sur l'ordinateur personnel et lancez-la pour l'exécuter ;

    dans la fenêtre d'application qui s'ouvre, sélectionnez l'élément de menu Connexion ;

    entrez l'adresse IP du système UNIX distant (par exemple, 192.168.2.19) ;

    définir les caractéristiques du terminal comme vous le souhaitez.

Procédure d'inscription

Lorsque l'invite login: apparaît, entrez votre nom de connexion et appuyez sur la touche ... Par exemple, si votre nom de connexion est all30123, la chaîne d'enregistrement ressemblera à ceci :

    connexion: all30123

Si vous faites une erreur lors de la saisie de votre identifiant, vous pouvez le corriger avec le symbole @ ou la touche .

N'oubliez pas que la casse des caractères que vous saisissez est importante. Les noms all30123 et ALL30123 appartiennent à deux utilisateurs différents.

Le système vous demande maintenant un mot de passe. Entrez votre mot de passe et appuyez sur la touche ... Si vous faites une erreur en tapant, vous pouvez la corriger à l'aide de la touche ou le symbole @. UNIX n'affiche pas votre mot de passe à l'écran pour des raisons de sécurité.

Si le login et le mot de passe sont valides sur un système UNIX, le système peut afficher les informations actuelles, puis l'invite de ligne de commande.

Lorsque vous vous connectez, l'écran du terminal ressemblera à ceci :

    connexion: all30123

Si vous faites une erreur lors de la connexion, UNIX affichera le message :

    identifiant incorrect

Il vous donnera alors une seconde chance de vous connecter en vous invitant à saisir une invite de connexion. L'écran ressemblera à ceci :

    connexion: all30123

Si vous ne vous êtes jamais connecté à un système UNIX, votre procédure d'enregistrement peut différer de celle décrite ci-dessus. Cela peut se produire si l'administrateur système a fourni une procédure d'attribution de mots de passe temporaires aux nouveaux utilisateurs. Si vous avez un mot de passe temporaire, le système vous obligera à choisir un nouveau mot de passe avant de vous autoriser à vous inscrire.

En vous forçant à choisir un nouveau mot de passe uniquement pour votre usage, le système est plus sécurisé.

Procédure de connexion :

    Vous êtes en contact ; le système UNIX affiche l'invite login:. Entrez votre nom d'enregistrement et appuyez sur la touche .

    UNIX affiche le mot de passe : invite. Entrez votre mot de passe temporaire et appuyez sur la touche .

    Le système vous informera que votre mot de passe temporaire n'est plus valide et vous demandera de choisir un nouveau mot de passe.

    Le système vous demandera d'entrer votre ancien mot de passe. Saisissez un mot de passe temporaire.

    Le système vous demandera d'entrer votre nouveau mot de passe. Entrez votre mot de passe choisi.

Le mot de passe doit correspondre les exigences suivantes:

    chaque mot de passe doit comporter au moins 6 caractères ;

    chaque mot de passe doit contenir au moins 2 caractères alphabétiques et un chiffre, ou Caractère spécial... Un caractère alphabétique peut être saisi en gros ou en petits caractères ;

    chaque mot de passe doit être différent de votre nom d'utilisateur. Les lettres majuscules et leurs lettres minuscules correspondantes sont équivalentes ;

    le nouveau mot de passe doit différer de l'ancien d'au moins trois caractères.

Exemples de mots de passe valides :

Pour vérification, le système vous demande de ressaisir le mot de passe. Saisissez à nouveau le mot de passe.

Si vous saisissez le nouveau mot de passe une deuxième fois différemment de la première, le système vous informera que les mots de passe ne correspondent pas et vous proposera de répéter à nouveau la procédure d'enregistrement. Lorsque les mots de passe correspondent, le système affichera un indice.

L'écran suivant affiche la procédure décrite :

    connexion : dko30123

    le mot de passe:

    Votre mot de passe a expiré

    Choisissez-en un nouveau

    Ancien mot de passe:

    Nouveau mot de passe:

    Ré-entrez le nouveau mot de passe:

Identification de l'utilisateur

Lorsque l'administrateur système enregistre un utilisateur sur le système, deux composants d'identification sont associés au nom de connexion : ID de l'utilisateur(ID utilisateur - UID) et identifiant de groupe auquel il appartient (ID de groupe - GID).

Le nom d'utilisateur est associé à un numéro unique. Le système l'utilise comme outil dans divers mécanismes de sécurité sous UNIX OS, par exemple, lors de la protection de fichiers ou lors de l'exécution de commandes privilégiées.

Sur tout système d'exploitation UNIX, il existe un superutilisateur spécial avec UID = 0, qui est généralement associé au nom root. Cela signifie que l'utilisateur dispose de tous les privilèges système.

Le nom du groupe est également associé à un numéro, qui fait généralement référence à un groupe d'utilisateurs unis par des tâches communes, par exemple, les employés du département, les étudiants du même fil, etc. Ce numéro est également utilisé par les mécanismes de sécurité du système. Si l'utilisateur a besoin de travailler avec des données d'autres groupes, cet identifiant est associé aux noms d'autres groupes.

Toutes les informations d'enregistrement sur les utilisateurs du système sont stockées dans le fichier /etc/passwd.

Dans les versions modernes d'UNIX, les mots de passe cryptés et les informations système associées sont stockés dans le fichier / etc / shadow, dont la structure et l'objectif des champs sont illustrés à la Fig. 8.2
.

Les enregistrements de données sur chaque groupe installé sont contenus dans le fichier /etc/group, dont la structure et l'objectif des champs sont illustrés à la Fig. 8.3 .

La structure et l'objectif des champs du fichier /etc/passwd sont illustrés à la Fig. 8.4
.

Conventions de saisie

Lorsque vous interagissez avec un système UNIX, vous devez connaître les conventions d'entrée. Le système UNIX exige que vous entriez les commandes en lettres minuscules (à l'exception de certaines commandes qui incluent grosses lettres). D'autres conventions vous permettent d'effectuer des tâches telles qu'effacer des lettres ou supprimer une ligne en appuyant sur une ou deux touches.

Tableau 8.1.
Conventions de saisie

Clé

Fonction

Invite de commande système (vous invite à entrer votre commande)

ou<^h>

Effacer le symbole

Arrêter l'exécution d'un programme ou d'une commande

Supprimer la ligne de commande actuelle

Lorsqu'il est utilisé avec un autre caractère, il indique l'exécution d'une fonction spéciale (appelée séquence de commutation de code). Lorsqu'il est utilisé en mode édition de l'éditeur vi, cela signifie la fin du mode de saisie de texte et le retour au mode commande.

Marque la fin de la ligne de saisie et place le curseur sur nouvelle ligne

Arrêtez de taper ou de vous déconnecter (arrêt)

Revenir en arrière d'un caractère (pour les terminaux qui n'ont pas de clé )

Arrêter temporairement d'afficher

Continuer à afficher les informations qui ont été arrêtées avec<^s>

Noter. Table 2.1 caractère ^ signifie caractère de contrôle ... C'est-à-dire que dans ce cas, vous devez appuyer sur deux touches en même temps : la touche du caractère de contrôle et la lettre spécifiée.

Invite de commande

L'invite utilisateur UNIX standard est le signe dollar $. Pour l'utilisateur root - #. Lorsqu'une invite apparaît sur l'écran de votre terminal, cela signifie que le système UNIX attend des instructions de votre part. La réponse appropriée à une invite de votre part est d'émettre une commande suivie d'une pression sur une touche .

Correction des erreurs de saisie

Il existe plusieurs façons de corriger les erreurs de frappe. Le symbole @ efface la ligne courante et les touches et<^h>effacer le dernier caractère saisi. Ces clés et caractères sont des valeurs par défaut. Les fonctions qu'elles remplissent peuvent être réaffectées à d'autres touches.

Arrêt de l'exécution de la commande

Pour arrêter l'exécution de la plupart des commandes, appuyez simplement sur le raccourci clavier ... Le système UNIX arrêtera l'exécution du programme et affichera une invite à l'écran. Cette invite sert de signal que la dernière commande exécutée s'est arrêtée et que le système est prêt à recevoir la commande suivante.

Lorsqu'une invite s'affiche à l'écran, UNIX vous a reconnu en tant qu'utilisateur autorisé et attend que vous saisissiez une commande.

En général, la ligne de commande a la structure suivante :

    nom [options] [arguments]

Les noms de commandes, les options et les arguments doivent être séparés les uns des autres par un espace ou une tabulation. L'interpréteur ne commence à traiter la ligne de commande qu'après avoir appuyé sur une touche .

Dans la description suivante des fonctions des commandes, il est supposé :

Options (paramètres):

    sont un signe de modification de commande et, en règle générale, se composent d'un seul caractère; les lettres majuscules et minuscules signifient des modifications différentes ;

    en règle générale, ils commencent par le caractère "-" ("moins"), qui n'est pas séparé par un espace du reste des caractères;

    peut être combiné de n'importe quelle manière, tandis que le signe moins ne peut être utilisé qu'une seule fois.

Les arguments indiquent les objets à traiter par la commande, par exemple :

    Nom de fichier;

    numéro de processus ;

Si vous savez ce que le programme appelé doit faire, mais que vous n'êtes pas sûr de la syntaxe correcte, vous pouvez utiliser l'option --help sur la ligne de commande après le nom de la commande :

    $ cal --help

Pour des informations détaillées, UNIX dispose d'un manuel en ligne accessible par les commandes man et apropos.

Dans le cas le plus simple, pour obtenir des informations sur une commande, vous devez spécifier son nom en argument de la commande man :

    man command_name

apropos affiche une liste de commandes selon le mot-clé (pattern) spécifié en argument de la commande :

    à propos du modèle

Exemples.

Si vous exécutez la commande date et appuyez sur la touche , le système UNIX appelle un programme appelé date, l'exécute et affiche le résultat à l'écran :

    $ date

    Mar. 18 sept. 14:49:07 2000

La commande date affiche la date et l'heure.

Si vous exécutez la commande who et appuyez sur la touche alors l'écran ressemblera à ceci:

    $ qui

    dko30024

    18 octobre 8h30

    dko30001

    18 octobre 8:34

    dko30020

    18 octobre 8:32

    18 octobre 8:00

qui répertorie les noms d'utilisateur actuellement en cours d'exécution sur votre système. La notation tty (deuxième colonne) fait référence à des fichiers spéciaux qui correspondent à chaque terminal utilisateur. Les troisième et quatrième colonnes indiquent la date et l'heure d'inscription de chaque utilisateur. ...

Cela signifie que vous avez terminé avec succès de travailler avec le système et qu'il est prêt à enregistrer un nouvel utilisateur.

Si vous vous êtes inscrit depuis un terminal distant, la connexion sera interrompue, ce qui vous sera notifié, par exemple, par l'application telnet.

Noter. Avant de déconnecter le terminal, assurez-vous d'éteindre le système.

Principales conclusions

    UNIX est un système multi-tâches et multi-utilisateurs. Un serveur puissant peut répondre aux demandes d'un grand nombre d'utilisateurs. Le système peut exécuter une variété de fonctions : fonctionner comme un serveur informatique desservant des centaines d'utilisateurs, comme un serveur de base de données, comme serveur réseau ou un routeur réseau.

    En termes généraux, le système d'exploitation UNIX peut être représenté par un modèle à deux niveaux. Au centre se trouve le noyau du système (noyau). Le noyau interagit directement avec le matériel de l'ordinateur, isolant les programmes d'application des caractéristiques de son architecture. Le noyau comprend des programmes qui implémentent un ensemble de services fournis aux programmes d'application. Les services du noyau incluent les opérations d'E/S, la création et la gestion de processus, la synchronisation de processus, etc. Le niveau suivant du modèle est constitué des services système qui fournissent l'interface utilisateur du système d'exploitation UNIX. Le schéma d'interaction avec le noyau pour les applications et les tâches système est le même.

    Le système d'exploitation UNIX interagit avec les ressources matérielles et logicielles de l'ordinateur, effectuant les fonctions suivantes :

    • gestion de l'équipement;

      la gestion des ressources;

      prise en charge des interfaces utilisateur ;

      exécution de l'entrée et de la sortie d'informations ;

      surveillance du système;

      fourniture d'accès à distance à un réseau informatique.

    Un système UNIX contient trois composants principaux : le système de commande, les shells et le noyau.

    Dans le cadre du système d'exploitation UNIX, plusieurs centaines de commandes effectuent des tâches d'organisation et de traitement des données et contrôlent l'environnement de l'utilisateur. Les commandes elles-mêmes sont de petits programmes qui exécutent des fonctions spécifiques, nécessitent généralement une entrée de données minimale et sont relativement rapides à exécuter.

    Les shells sont communément appelés programmes interactifs qui fournissent une interface utilisateur au noyau du système d'exploitation. Le shell devient le processus utilisateur actif à partir du moment où il se connecte au système jusqu'à ce qu'il se déconnecte. Ces programmes sont des interpréteurs de commandes (parfois appelés processeurs de commandes).

    Le noyau est le noyau du système d'exploitation, qui fournit des fonctionnalités de base : il crée et gère des processus, alloue de la mémoire et fournit un accès aux fichiers et aux périphériques.

    Le noyau se compose de trois sous-systèmes principaux :

    • sous-système de gestion des processus et de la mémoire ;

      sous-système de fichiers ;

      sous-système d'entrée/sortie.

    Pour établir le contact avec un système UNIX, vous devez disposer :

    • Terminal;

      un nom de connexion qui vous identifie en tant qu'utilisateur autorisé ;

      un mot de passe qui vérifie votre identité ;

      instructions de dialogue et d'accès à un système UNIX si votre terminal n'est pas directement connecté à un ordinateur.

Questions de contrôle

    Pour quelles tâches la classe de systèmes d'exploitation UNIX est-elle destinée ?

    Quelles fonctionnalités un système d'exploitation de classe UNIX doit-il fournir ?

    Quelles sont les tâches du noyau UNIX ?

    Quelles sont les fonctions du noyau UNIX ?

    A quoi sert le composant système de commande du système d'exploitation ?

    Diriez-vous que le shell fournit une interface interactive permettant à l'utilisateur d'interagir avec le système d'exploitation ?

    Comment s'effectue l'authentification des utilisateurs sous UNIX ?

Vous avez aimé l'article ? A partager avec des amis :