Qu'est-ce que POSIX? Normes de systèmes d'exploitation du système de fichiers POSIX en temps réel

Sur les normes en général

Les programmeurs des praticiens sont l'opinion que les normes de programmation ne sont pas nécessaires du tout, depuis:

(1) Ils sont initialement dénués de sens, car leurs auteurs n'écrivent pas de programmes informatiques;

(2) ils combattent l'initiative des programmeurs;

(3) Les programmeurs seront toujours d'accord sans normes.

Peut-être que cette opinion ne devrait pas être accordée à une attention particulière à deux circonstances:

(1) Ses pratiques expriment, c'est-à-dire celles qui "émettent des produits de programme";

(2) L'argument ci-dessus a été découvert par l'auteur de cet article dans l'une des publications sur Internet sur la norme pour le langage de programmation de C, qu'il est devenu évident qu'un tel avis a été diffusé «à l'échelle internationale», et non seulement parmi les Arrogant russe "superfogramministes".

Le mot "standard" est généralement associé à quelque chose de matériau (dimensions standard, stress électrique standard, etc.), tandis que le programme informatique est un objet incorporel ("la nouvelle intangible"), et peut-être des normes dans la sphère immatérielle vraiment sans signification?

Il y a cependant un exemple de réfutation. La combinaison des règles de l'orthographe de la langue russe est essentiellement une norme, bien que non approuvée par les autorités de normalisation. En outre, à l'exception des règles (ou, si vous, les exigences) de l'orthographe, il existe des règles syntaxiques et, surtout, la sémantique. Ce dernier illustre la question "des enfants": pourquoi le chat appelle-t-il un chat? Il y a une réponse précise à cette question: parce que nos ancêtres ont convenu; Les ancêtres des Britanniques ont accepté d'appeler la même bête chat, les ancêtres des Allemands - chaton, etc. En général, la signification, la sémantique, ou les règles d'interprétation de tout mot ou une combinaison de mots - la question de l'accord.

Rendez-vous et "superbate" de la standard POSIX

Comme le nom suit, POSIX (Interface de système d'exploitation portable) est une norme de compilation entre le système d'exploitation et le programme d'application. Temps lorsque les programmeurs ont écrit des programmes pour la machine "nue" (mise en œuvre de leurs propres packages de programmes d'E / S, de fonctions trigonométriques, etc.), est passée irrémédiablement. Le texte POSIX souligne à plusieurs reprises que la norme ne propose aucune exigence pour les opérations du système d'exploitation; Il peut être considéré comme une totalité d'accords entre les programmeurs d'applications et les développeurs de systèmes d'exploitation. Ainsi (encore une fois, contrairement à une opinion assez populaire), Posix présente des intérêts non seulement pour les développeurs de systèmes d'exploitation, mais tout d'abord, pour une catégorie beaucoup plus nombreuse de programmeurs - appliquée.

La nécessité de la norme de ce type a été réalisée dans les années 1980, lorsque les systèmes d'exploitation UNIX étaient généralisés. Il s'est avéré que, bien que ce système ait été conçu comme unifié, les différences entre ses implémentations spécifiques ont entraîné le fait que les programmes d'application écrits pour un système ne pouvaient pas toujours être exécutés dans une autre. Sur la décision de ce problème particulier, connu sous le nom de problème de la mobilité logicielle, destiné à POSIX. La première édition de la norme a été publiée en 1988 (il existe une traduction, voir), dans laquelle toute la variété de problèmes liés à la mobilité du programme a été divisée en deux parties: (1) Interface d'application, (2) Interprète de commande et utilitaires (Interface utilisateur); Ces pièces s'appelaient POSIX.1 et POSIX.2, respectivement1.

Nous devrons préciser que cet article ne parlera que de la norme d'interface d'application, de POSIX.1, de la seconde (et de la dernière date) qui a été approuvée le 12 juillet 1996.

La partie informative de la norme souligne également que POSIX n'est pas une description de l'interface d'un système d'exploitation «idéal», mais le résultat de la généralisation et de la systématisation de l'expérience acquise dans le développement de systèmes d'exploitation UNIX. De plus, POSIX ne peut pas servir de guide ou de manuel de formation pour les systèmes d'exploitation, bien que la partie informative contienne des recommandations aux programmeurs et aux fragments de programmes.

La norme indique le fait qu'il est impossible de créer un système d'exploitation à part entière, de se concentrer exclusivement sur les fonctions d'interface décrites. (En particulier, POSIX.1 ne reflète pas de telles questions que des fonctions de réseautage et d'interface associées ou une interface graphique.) Toutefois, les coûts financiers causés par la nonchabilité des programmes et la nécessité de l'unification de l'interface sont si importantes que la plupart des fabricants préfèrent Avoir au moins une norme que personne. Pour cette raison, de nombreux développeurs de logiciels cherchent à naviguer sur POSIX. Cela permet que vous n'éliminez pas complètement la non-muté de programmes, puis réduisez au moins de manière significative la partie nagrétable du programme.

À propos de la sémantique

Comme déjà mentionné, POSIX peut être considéré comme un ensemble d'accords entre le développeur du système d'exploitation et le programmeur d'application. «Accord» signifie avant tout la similitude d'interprétation (sémantique) des mots et des expressions. Voici des exemples illustrant la difficulté de la tâche de réaliser un accord.

Comment transmettre le sens lors de la traduction

Tout d'abord, vous devez vous rappeler que la norme POSIX est définie en anglais, que dans la nature provoque une ambiguïté (par exemple, le même mot peut être des noms, un adjectif et un verbe) et des "pièges sémantiques" écoutés presque sur chaque page. Une bonne illustration dudit est un exemple de fiction. L'une des œuvres les plus célèbres d'Oscar Wilde, qui a brillamment utilisé cette caractéristique de la langue anglaise, - l'importance d'être sérieuse - est connue dans le Russe appelé "Quelle importance d'être sérieuse". Cependant, le nom anglais a une seconde signification: sérieux (sérieux) - le nom de famille de l'un des caractères et le nom pourrait être traduit différemment: «Quelle est l'importance d'être Ernst». Il y a un nom de famille russe Silver et s'il y avait un nom de famille sérieux, la traduction serait parfaitement précise, avec le transfert des deux significations.

Il en va de même pour le nom de la norme: Interface système d'exploitation portable. L'adjectif portable (mobile) fait référence au système d'exploitation et au programme d'application, mais il n'est pas possible de l'exprimer sous peu en russe, vous pouvez traduire en tant que "interface de système d'exploitation mobile" ou "interface système d'exploitation qui offre la mobilité de programmes d'application. " La deuxième option reflète mieux les intentions des développeurs standard, mais en même temps, le premier lavé a été perdu (la première option la plus familière a été préservée).

Sémantique du mot "standard"

Le texte principal de la norme est préammé par le préambule, dans lequel la signification du mot IEEE Standards2 est expliquée. Comme suit ces éclaircissements, il existe au moins trois différences sémantiques du terme russophone gost:

(1) Croit intuitivement que GOST a le pouvoir de la loi dont la violation est persécutée; POSIX est un ensemble d'exigences, à la suite duquel est le cas exclusivement volontaire.

(2) Gost agit jusqu'à l'annulation (beaucoup, probablement, devaient entendre l'expression "governing personne annulée"); Dans le préambule de POSIX, on dit que si la norme n'était pas révisée pendant 5 ans, cela signifie que les questions considérées considérablement perdues ont probablement perdu la pertinence, et elle peut être considérée comme annulée automatiquement;

(3) Gost anonome; Dans la partie introductive de POSIX, une liste de ces personnes qui ont participé au développement de cette norme sont données et donne également l'adresse dans laquelle vous pouvez envoyer des demandes d'interprétation; On dit également que la réponse à chaque demande est soumise à la procédure de coordination (en d'autres termes, les auteurs de la norme sont d'accord avec l'autre avant de donner la réponse).

Ainsi, la traduction de même mot bien connu en tant que mot standard "standard" nécessite des commentaires.

La sémantique des mots "doit", "non spécifiée", "non définie", "déterminée par la mise en œuvre"

La section 2 de la norme s'appelle "Terminologie et exigences générales". Il contient les définitions des termes non seulement (tels que «processus» ou «sémaphor»), mais aussi, il semblerait que des mots évidents, comme «doivent» ou «mai». Étant donné que POSIX.1 est une norme sur l'interface, ses exigences sont liées à la fois au système d'exploitation et au programme d'application. L'exigence explicite est exprimée par le mot "DOIT" (doit), par exemple: "En cas d'achèvement réussi, la fonction LINK () doit renvoyer la valeur zéro". Dans cet exemple, nous parlons de l'exigence du système d'exploitation: la fonction LINK () doit être mise en œuvre de manière à ce que la valeur zéro ait été renvoyée.

Les termes "non spécifiés" et "non définis" expriment la même idée que la norme admet la liberté de choix, mais la signification de ces termes est variée. Le terme "non spécifié" implique que nous parlions de certaines options correctes (actions, structures logicielles, etc.) et le terme "non défini" - à peu près incorrecte (erronée). La partie informative de la norme fournit l'explication suivante.

Le terme "non spécifié" signifie que de nombreuses options (résultats, les résultats de l'appel de la fonction, etc.) sont supposés être connus et la norme permet d'entre eux; Dans une implémentation spécifique du système d'exploitation, tout le monde peut être sélectionné, et un tel système est considéré comme la norme correspondante. Le programme appliqué (standard strictement pertinent) doit être écrit de manière à ce qu'il fonctionnait correctement dans une variante; Essentiellement, ce terme a implicitement exprimé une exigence implicite pour un programme d'application.

Donnons un exemple: "La fonction READDIR () doit renvoyer un pointeur sur la structure relative à l'élément de répertoire suivant. Si les éléments du répertoire sont renvoyés avec les noms "DOT" et "Point-Point", la norme n'est pas spécifiée. " Dans cet exemple, quatre résultats sont possibles et l'exigence d'un programme d'application est qu'il doit être conçu pour l'un d'entre eux.

Un autre exemple: "Si la fonction SIGWAIT (), laquelle prescrit l'attente du signal avec le numéro spécifié est causée dans plusieurs flux de commande, alors lorsque le signal est reçu, pas plus d'un d'entre eux ne devraient revenir de SIGWAIT (). Dans quel type de flux de contrôle cela va arriver, la norme n'est pas spécifiée. " Dans cet exemple, de nombreux résultats possibles peuvent être plus, mais ils sont également connus et l'exigence d'un programme de candidature est qu'elle devrait fonctionner correctement à tout résultat.

Le terme "non défini" implique que même de nombreux résultats ne sont pas connus, aucun résultat est possible, même déplorable (par exemple, effondrement du système, perte de données, etc.). Essentiellement, ce terme a implicitement exprimé l'exigence du programme d'application de ne pas utiliser les données ou conceptions appropriées. Par exemple: "Si la fonction DIRP Argument ReadDir () ne se réfère pas à l'annuaire actuellement ouvert, le résultat n'est pas défini."

Cet exemple contient une demande à appliquer sous forme de fonction d'argument ReadDir () Lien uniquement sur un répertoire ouvert; La violation de cette exigence peut entraîner des conséquences désastreuses et la responsabilité de celui-ci est attribué à un programmeur d'application.

Voici un autre exemple: "En cas d'achèvement réussi, la fonction Lecture () doit renvoyer un entier qui indique le nombre d'octets pratiquement lu. Sinon, la fonction doit affecter un code d'erreur à errno et renvoyer -1, et le contenu du tampon à laquelle l'argument BUF spécifie n'est pas défini. "

Utilisez dans un programme d'application d'un tampon en cas d'erreur de la fonction Lecture (), la norme interdit, et les conséquences de la violation de cette exigence impose au programmeur d'application.

La signification du terme "est déterminée par la mise en œuvre" diffère de intuitive. De toute évidence, dans un système d'exploitation spécifique, il ne peut y avoir aucun résultat «non-conseil» ou «incertain», un résultat particulier sera obtenu. Le terme "déterminé par la mise en œuvre" exprime l'exigence de la norme à la documentation du système d'exploitation: le résultat doit non seulement être clarifié (le développeur du système d'exploitation devra faire quand même), mais reflète également explicitement la documentation pour le système.

Semantitique par défaut

Aucun document de réglementation ne peut couvrir toute la variété de cas pouvant se rencontrer dans la pratique, il est donc inévitable pour quelque chose de silencieux3. Par exemple, dans la description de la fonction, on peut dire que son argument peut prendre des valeurs d'une certaine gamme, mais rien ne dit que ce sera le résultat si l'argument ne tombe pas dans cette plage. Évidemment, afin d'éviter des malentendus, il est nécessaire d'avoir une seule sémantique par défaut. Dans la partie informative de la norme, il existe une phrase curieuse: "La sémantique généralement acceptée de la valeur par défaut est interdite." Cette déclaration contradictente le slogan bien connu de dix ans il y a une décennie "tout ce qui n'est clairement pas interdit est autorisé. Apparemment, il était tellement enraciné dans la conscience des citoyens que beaucoup, même les programmeurs, ne sont pas d'accord avec la déclaration de la norme devenue. Entre-temps, si l'utilisation de n'importe quel design n'est clairement pas autorisée et ne suit pas de la description, tout programmeur de praticien réalise que son utilisation est risquée et qu'elle ne fonctionne pas, elle ne fonctionne pas.

Processus et flux de contrôle

Ces deux termes expriment l'idée du parallélisme de l'exécution. Le système d'exploitation UNIX a été conçu à l'origine comme un multijoueur et les programmes lancés par différents utilisateurs doivent être isolés de manière sécurisée les uns des autres pour déformer accidentellement les données "Autres personnes". Cet isolement est fourni par le fait que le programme utilisateur est exécuté dans un processus donné dans son propre espace d'adresses virtuel. Même si le programme a des données globales, lorsqu'il la démarre dans différents processus, ils seront automatiquement "divorcés" par différents espaces d'adresses.

Cependant, le mécanisme des processus n'est pas tout à fait satisfaisant lors de la programmation des tâches en temps réel. Le programme d'application en temps réel (agissant pour le compte du même utilisateur) peut souvent être naturellement représenté comme parallèle aux pièces exécutables, appelées «flux de contrôle» (fil). La différence la plus significative des processus est que toutes les flux de contrôle se développent dans un seul espace d'adresse; Cela garantit un accès rapide aux données globales, mais tout en même temps, le risque de distorsion involontaire de leur distorsion et que cela ne se produit pas, il est nécessaire de se conformer à une programmation de discipline. Les recommandations pertinentes sont contenues dans la partie informative de la norme.

Il convient de souligner que l'idée de multithreading est mise en œuvre dans de nombreux systèmes d'exploitation en temps réel et est mise en œuvre différemment en ce sens que différents ensembles d'attributs et de fonctions d'interface correspondent à chaque courant de contrôle; Parfois, au lieu du terme "flux de contrôle" (thread) utilise le terme "tâche" (tâche). Afin d'éviter des malentendus, la norme souligne que cela se présente exclusivement sur les flux de contrôle POSIX, et les noms des fonctions d'interface correspondantes ont le préfixe pthread_ (par exemple, pthread_create (), pthread_join (), etc.).

Conformité à la norme. La sémantique du mot "correspond"

Il est intuitif que si deux sujets sont réalisés conformément à la même norme, ils sont garantis pour "correspondre" les uns avec les autres et travailleront ensemble dans une paire; C'est dans ce que le but de l'introduction de la norme pour la conjugaison (interface) est. Étant donné que POSIX est une norme sur l'interface, vous pouvez parler de la norme conforme du système d'exploitation et du programme d'application.

POSIX.1 La norme contient plusieurs centaines d'exigences (voire des milliers); Il est jugé évident que si au moins l'un d'entre eux n'est pas rempli, le système (ou le programme d'application) ne satisfait pas la norme. Dans le même temps, un tel certain nombre de systèmes d'exploitation et de programmes d'application UNIX pour eux sont écrits à ce jour, il est peu probable que cela nécessite raisonnablement une correspondance complète au sens spécifié. Les difficultés de développement d'une norme internationale de ce type sont exacerbées par l'existence de différentes langues nationales. Même si vous oubliez des programmes d'application conçus pour traiter les textes dans les langues nationales, presque toutes les applications doivent émettre des messages de diagnostic et / ou percevoir les textes saisis par l'opérateur.

  • conformité stricte avec la norme POSIX.1;
  • conformité à la version internationale de POSIX.1;
  • conformité à la version nationale POSIX.1;
  • conformité POSIX.1 avec extensions.

Deuxièmement, de nombreux fonds d'interface sont déclarés facultatifs (facultatifs); La norme nécessite que les fonctions d'interface optionnelle soient soit définies comme indiquées par la norme, ou ont toujours renvoyé un code d'erreur spécial, Enurosys (ce qui signifie que la fonction n'est pas mise en œuvre). Les moyens facultatifs sont divisés en plusieurs groupes, chacun correspondant à une constante de configuration, qui est déclarée (Opérateur #define) dans le fichier d'en-tête correspondant; Cela garantit la possibilité de déterminer si la fonction est mise en œuvre sur la phase de compilation.

L'admission décrite de la mobilité a été inventée non pas par les auteurs de POSIX, et il y a longtemps appliqué dans la pratique; Dans de nombreux systèmes d'exploitation, des constantes de configuration sont appliquées pour identifier le système lui-même ou sa version. Et ici, la norme n'offre rien de manière fondamentalement nouvelle, mais seulement systématiser la pratique existante.

Objets de normalisation et structure standard

Pour parler brièvement, les objets de normalisation POSIX.1 sont des noms et des sémantiques. Plus spécifiquement, nous parlons de ce qui suit.

  • Caractéristiques de l'interface. 357 Les fonctions sont normalisées et 107 fonctions sont extraites des bibliothèques standard SI (mathématiques, traitement de la rangée, entrée / sortie, etc.); Ces fonctions sont considérées comme faisant partie de la norme POSIX.1, mais leur description complète est contenue dans le langage de programmation standard.
  • Noms des types de données système. Ces noms ont un suffixe _t.
  • Les noms des fichiers d'en-tête, ainsi que la composition minimale de ces fichiers.
  • Noms des variables globales à l'échelle du système (par exemple, errno).
  • Noms symboliques pour les codes d'erreur pouvant être installés lors de la fonction de travail. Ces noms commencent par la lettre E (Eperm, EnoPty, etc.).
  • Noms de configuration constants. Ces noms ont préfixe _posix_.
  • Noms symboliques des signaux; Ces noms ont un préfixe SIG. Outre 20 signaux "traditionnels" (SIGABRT, SIGALRM, etc.), des signaux en temps réel sont normalisés, dont les numéros devraient occuper une plage solide de SIGTMIN à SIGTMAX inclus, ne contenant pas moins de numéros RTSIG_MAX.
  • Noms symboliques correspondant aux valeurs d'arguments individuels de certaines fonctions (par exemple, la fonction CMD Argument FCNTL () peut prendre F_DUPFD, F_GETFD, F_GETLK Valeurs, etc.).
  • Noms des macros, constantes, drapeaux de bits, variables d'environnement.

En général, la norme consiste en deux grandes parties d'approximativement du même volume. La première moitié est la partie réglementaire - contient les exigences et les recommandations de la norme (18 sections), la deuxième partie informative - contient des applications fournissant une liste de références, de commentaires et d'explications à la partie réglementaire, la composition des fichiers d'en-tête. , un exemple de profil ("projection") de la norme (pour le Danemark), des caractéristiques et des méthodes de mesure de la performance des fonctions les plus importantes, ainsi qu'une description des fonctions d'interface supplémentaires pour travailler avec des fichiers en temps réel; On s'attend à ce que, dans les éditions suivantes de la norme, ces fonctions seront incluses dans la partie réglementaire.

L'idée de quels types de services du système d'exploitation sont couverts par la norme, donne la somme du «résumé des sections standard».

Conclusion

Le contenu principal de la norme POSIX est la sémantique des fonctions d'interface. Normalisation de la sémantique - L'affaire elle-même n'est pas facile (tout le monde sait à quel point il est difficile de convenir de deux personnes) et des difficultés sont exacerbées par beaucoup de personnes participent actuellement à des activités de programmation. Par exemple, le paradigme d'exécution parallèle est exprimé par des termes tels que le "processus", "tâche" et "flux de gestion", mais du point de vue de la programmation pratique "tâche" dans le système d'exploitation IBM OS / 360 et dans le Le système d'exploitation en temps réel VXWorks n'est pas un et également. Un autre exemple est les sémaphores. Les sémaphores sont binaires, entier ("avec un mètre") et une exception mutuelle (qui, à la hausse, les programmeurs sont appelés "mutiles", cherchant sphilalement à éviter les malentendus). Et des sémaphores entier, par exemple, dans le système d'exploitation VXWorks, ne sont pas du tout de même que les sémaphores POSIX.

Les auteurs de la norme POSIX, réalisant parfaitement à quel point il est difficile de faire en sorte que les gens abandonnent leurs habitudes (qu'ils appellent la "pratique établie"), déclarent qu'ils ont formulé un système logiquement connecté et minimal de fonctions d'interface couvrant la plupart des services fournis traditionnellement Par le système d'exploitation, en détail décrivait la sémantique exacte de ces fonctions et offrent à chacun de les utiliser dans leurs développements4.

Lors de la lecture de la norme, l'impression survient parfois que certaines formulations avaient un seul objectif: ne pas retirer certains programmes d'application ni des systèmes d'exploitation de la catégorie. Un tel objectif était effectivement défini et clairement formulé dans l'introduction: la norme doit tenir compte de la pratique actuelle pour maximiser l'étendue. Cependant, l'objectif principal est de garantir la mobilité des programmes d'application.

À propos de l'authentique

Sergey Romyuk - chercheur principal de l'Institut de recherche de la recherche système, responsable du groupe de traductions standard de POSIX. Vous pouvez le contacter par courrier électronique à l'adresse suivante: [Email protégé]

1 Il convient d'ajouter que les travaux sur la norme se poursuivent pendant de nombreuses années; De nouvelles questions sont identifiées et elles sont soit incluses dans l'une des parties existantes, soit formulées sous la forme d'une partie distincte, qui peut ensuite être annulée. Cela s'est produit, par exemple, avec le moyen d'interface de temps réel, qui ont été annoncés d'abord comme POSIX.4, puis inclus dans POSIX.1.

2 IEEE est une organisation dans laquelle la norme POSIX a été développée.

3 Ici, le "MISTOR" signifie silencieux, pas par défaut; Cela ne concerne pas certaines valeurs implicites qui sont déclarées, mais sur la déclaration de mention du tout.

4 La traduction de la norme en russe sera publiée au début de 2000.

Littérature

Standard internationale ISO / CEI 9945-1 (ANSI / IEEE STD 1003.1) Deuxième édition. 1996-07-12. Technologies de l'information - Interface système d'exploitation portable (POSIX) - Partie 1: Interface de programme d'application système (API).

M.I. Belyakov, Yu.i. Wereruve, A.L.fridman. Système d'exploitation mobile. Annuaire. Moscou, radio et communication, 1991.

ISO / CEI 9899: 1990, Langues de programmation - C.

Section 1 - Introduction
Section 2. - Terminologie et définitions
Section 3. - Fonctions de gestion de processus (création, remplacement des images, achèvement) et des signaux (gestion du masque, réponse du signal)
Section 4. - Identification (processus, utilisateurs, systèmes, terminaux), une enquête sur les temps consacrés à l'exécution du processus, enquête sur la variable d'environnement.
Section 5. - Gérer les fichiers et les catalogues
Section 6. - Fonctions d'entrée et de sortie
Section 7. - Fonctions de gestion des terminaux
Section 8. - Fonctions empruntées à la norme
SECTION 9. - Accès aux bases de données utilisateur et aux groupes d'utilisateurs
Section 10. - Formats de données pour l'archivage et l'échange (goudron et CPIO)
Section 11. - Outils de synchronisation: sémaphores, mutiles et conditions variables
Section 12. - Fonctions de gestion de la mémoire: Fixation et désaccordez l'espace d'adressage du processus, affiche des fichiers de mémoire, la protection de la mémoire, la mémoire partagée
Section 13. - Fonctions liées aux processus de planification et aux flux de contrôle
Section 14. - gérer des horloges et des minuteries
Section 15. - Signaler la gestion des files d'attente
Section 16. - Fonctions de base liées aux flux de contrôle
Section 17. - Données de flux de contrôle individuelles (données spécifiques au fil)
Section 18. - des moyens de détruire les flux de contrôle

Objet: Systèmes d'exploitation.
Question: №8.

—————————————————————

Principes de la construction du système d'exploitation:

1.) Principe de modularité - Sous le module comprenez généralement l'élément fonctionnel terminé du système, effectué conformément aux interfaces intermoduclées. Selon sa définition, le module suppose la possibilité d'un remplacement facile à un autre en présence d'interfaces spécifiées. Dans une large mesure, la séparation du système sur les modules est déterminée par la méthode de conception OS utilisée (de bas en haut ou au contraire).

D'une importance particulière pour la construction du système d'exploitation sont préférées, réintégrées et des modules re -obrables (réédité - la répétabilité littéralement; un terme spécial pour désigner la santé du programme; la propriété du programme est correctement exécutée avec l'appel récursif (retourné) de l'interruption) .

Le plus grand effet sur l'utilisation de ce principe est réalisable dans le cas de la répartition simultanée de ce principe sur le système d'exploitation, les programmes d'application et l'équipement.

2.) Le principe d'un électeur fonctionnel - Certains des modules importants sont alloués dans le système d'exploitation, qui doit être constamment en RAM pour une organisation plus efficace du processus de calcul. Cette partie du système d'exploitation s'appelle le noyau, car c'est la base du système. Lors de la formation de la composition du noyau, il faut prendre en compte deux exigences contradictoires. D'une part, les modules système les plus fréquemment utilisés doivent être inclus dans le noyau, de l'autre - le nombre de modules devrait être tel que la mémoire occupée par le noyau n'est pas trop grande. En plus des modules logiciels faisant partie du noyau et qui sont constamment situés en RAM, il peut y avoir de nombreux autres modules logiciels système appelés transit. Les modules logiciels de transit sont chargés dans la mémoire opérationnelle uniquement si nécessaire et en l'absence d'espace libre, il peut être remplacé par d'autres modules de transit.

3.) Principe de la génération OS: L'essence du principe consiste à organiser (choisir) une telle méthode de représentation initiale du programme de gestion du système central du système d'exploitation (noyau et constante dans la RAM des composants principaux), qui permettait de personnaliser ce superviseur systémique en fonction de la spécificité. Configuration d'un complexe informatique particulier et du cercle de tâches résolues. Cette procédure est rarement détenue avant une période de fonctionnement suffisamment prolongée du système d'exploitation. Le processus de génération est effectué à l'aide d'un programme spécial à Torus et de la langue d'entrée correspondante de ce programme, ce qui vous permet de décrire les capacités du système du système et de la configuration de la machine. À la suite de la génération, la version complète du système d'exploitation est obtenue. La version générée du système d'exploitation est un ensemble d'ensembles de systèmes de modules et de données.

4.) Le principe de la redondance fonctionnelle: Ce principe prend en compte la possibilité d'effectuer le même travail par divers moyens. Le système d'exploitation peut inclure plusieurs types de moniteurs (modules de superviseur, contrôler des sujets ou un autre type de ressource), divers moyens d'organiser des communications entre les processus informatiques. La présence de plusieurs types de moniteurs, plusieurs systèmes de gestion de fichiers permet aux utilisateurs de s'adapter rapidement et le plus de manière adéquate le système d'exploitation à une configuration de système informatique spécifique, afin d'assurer la charge la plus efficace des moyens techniques lors de la résolution d'une classe spécifique de tâches, afin d'obtenir une performance maximale. lors de la résolution d'une classe de tâches spécifiée.

5.) Principe de la virtualisation: Construire des ressources virtuelles, leur distribution et leur utilisation actuellement appliquées dans presque tous les systèmes d'exploitation. Ce principe vous permet de présenter la structure du système sous la forme d'un ensemble spécifique de planificateurs de ressources et de distribution-télévision-télévision (moniteurs) et d'utiliser un schéma de distribution centralisé unifié des ressources.

La manifestation la plus naturelle et la plus complète du concept de la virtualité est le concept machine virtuelle. La machine virtuelle fournie à l'utilisateur reproduit l'architecture de la machine réelle, mais des éléments architecturaux dans une telle représentation dépassent de nouvelles rouillots de caractère améliorés, en règle générale, simplifiant le travail avec le système. Les caractéristiques peuvent être arbitraires, mais le plus souvent, les utilisateurs souhaitent avoir leurs propres caractéristiques architecturales «idéales» de la machine dans la composition suivante:

- uniformément dans la logique du travail de la mémoire virtuelle du volume presque illimité.

- Un nombre arbitraire de processeurs virtuels capables de parallery de travail et d'interagir pendant le travail.

- Un nombre arbitraire de périphériques virtuels externes capables de travailler avec une mémoire de la machine virtuelle en parallèle ou séquentiellement, de manière asynchrone ou de manière synchrone par rapport au fonctionnement d'un processeur virtuel, initiant le travail de ces dispositifs.

L'un des aspects de la virtualisation consiste à organiser la possibilité d'exécuter dans ces applications de système d'exploitation que dispersées pour un autre système d'exploitation. D'autres mots, nous parlons d'organiser plusieurs environnements d'exploitation.

6.) Principe de l'indépendance des programmes de périphériques externes: Ce principe est mis en œuvre maintenant dans la majorité écrasante de l'application générale. Pour la première fois, le plus systématique, ce principe a été mis en œuvre dans UNIX OS. Il est mis en œuvre dans la plupart des OS modernes pour PC. Ce principe est que la connexion de programmes avec des périphériques spécifiques n'est pas effectuée au niveau de la diffusion du programme, mais pendant la période de planification de son exécution. En conséquence, recomphant le programme avec un nouveau périphérique sur lequel les données sont disponibles n'est pas requise.

7.) Principe de compatibilité: Un aspect de la compatibilité est la méthode OS d'exécution de programmes écrits pour d'autres systèmes d'exploitation ou pour les versions antérieures de ce système d'exploitation, ainsi que pour une autre plate-forme matérielle. Il est nécessaire de partager des questions compatibilité binaire et compatibilité au niveau des textes source Applications.

La compatibilité binaire est obtenue lorsque vous pouvez prendre le programme exécutable et l'exécuter pour exécuter sur un autre système d'exploitation. Cela nécessite une compatibilité au niveau de la commande du processeur et la compatibilité au niveau d'appel système, et même au niveau de l'appel de la bibliothèque, s'ils se lient de manière dynamique.

La compatibilité au niveau des textes source nécessite la présence d'un traducteur approprié dans le cadre du logiciel système, ainsi que de la compatibilité au niveau de la bibliothèque et aux appels système. Cela nécessite de recompiler les textes source générant à un nouveau module effectué.

Il est beaucoup plus difficile de réaliser une compatibilité binaire entre les processeurs à base de différentes architectures. Pour qu'un ordinateur effectue un ordinateur d'exécuter l'autre logiciel (par exemple, le programme IBM PC Type PC est souhaitable à effectuer sur le PC de type Apple Macintosh), cet ordinateur doit fonctionner avec les commandes de la machine qui sont à l'origine non prouvées. Dans ce cas, le processeur de type 680 × 0 (ou PowerPC) doit exécuter un code binaire conçu pour le processeur I80X86. Le processeur 80 × 86 a ses propres décodeurs de commande, registres et architecture interne. Le processeur 680 × 0 ne comprend pas le code binaire de 80 × 86. Il doit donc choisir chaque commande, le décodant pour déterminer pour

ce qu'il est destiné, puis effectuez un sous-programme équivalent écrit pour 680 × 0.

L'un des moyens d'assurer la compatibilité du programme et des interfaces utilisateur est la correspondance de POSIX STAN DARTS, dont l'utilisation vous permet de créer des programmes dans le style de Unix, facilement transféré ultérieurement d'un système à un autre.

8.) Le principe d'ouverture et d'extensibilité: Un système d'exploitation ouvert est disponible pour analyser les utilisateurs et les spécialistes du système desservant le système informatique. Le vaste OS (modifiable, développé) permet non seulement d'utiliser les capacités de la génération, mais également d'introduire de nouveaux modules à sa composition, d'améliorer ceux existants, etc. En d'autres termes, il devrait être possible d'ajouter facilement des ajouts et des modifications dans les cas nécessaires sans perturber l'intégrité du système. D'excellentes opportunités d'expansion fournissent une approche de la structuration du système d'exploitation par type client-serveur à l'aide de la technologie micro-nucléaire. Conformément à cette approche, le système d'exploitation est construit comme un ensemble de programmes de gestion privilégiés - nous et l'ensemble de services non préconisés (serveurs). La partie principale du système d'exploitation reste inchangée et, au même moment, de nouveaux serveurs peuvent être ajoutés ou améliorés. Ce principe est parfois interprété comme système d'extensibilité.

9.) Principe de mobilité: Le système d'exploitation est relativement facile doit

chanter le processeur du même type sur le processeur d'un autre type et de la plate-forme matérielle du même type, qui comprend avec le type de processeur et le procédé d'organisation de tous les équipements informatiques (architecture informatique), sur une plate-forme matérielle de un autre type. Notez que le principe de la tolérabilité est très proche du principe de compatibilité, bien que ce ne soit pas le même. Créer un système d'exploitation portable de manière analogue à l'écriture de n'importe quel code Pheith et Simed, pendant que vous devez suivre certaines des règles:

- La plupart des systèmes d'exploitation doivent être effectués sur la langue exposer sur tous les systèmes prévus pour la transférer au loin. Ceci, tout d'abord, signifie que le système d'exploitation doit être écrit dans une langue de haut niveau, de préférence normalisé, par exemple, dans le S. Le programme écrit dans l'assembleur n'est pas effectué dans le cas général.

- Il est important de minimiser ou, si possible, mais d'exclure ces parties du code qui interagissent directement avec le matériel. La dépendance à l'égard de l'équipement peut avoir de nombreuses formes. Certaines formes évidentes de dépendances comprennent des registres directs de manipulation et d'autres services matériels. Enfin, si le code dépendant du matériel ne peut pas être complètement exclu, il doit être isolé dans plusieurs modules bien localisés. Le code dépendant du matériel ne doit pas être distribué sur tout le système. Par exemple, vous pouvez masquer la structure dépendante du matériel dans les données de type abstrait multiplexées du programme.

L'introduction de normes POSIX a poursuivi l'objectif de porter la portabilité de la création de logiciels.

10.) Principe de sécurité de l'informatique: Sécurité Lorsque des calculs effectuant des calculs sont une propriété sage pour tout système multi-utilisateurs. Les règles de sécurité définissent des propriétés telles que la protection des ressources d'un utilisateur d'autres personnes et la mise en place de quotas de ressources pour empêcher une capture d'utilisateur en service de toutes les ressources système, telles que la mémoire.

S'assurer que la protection des informations provenant d'un accès non autorisé est une fonction obligatoire des systèmes d'exploitation de réseau.

—————————————————————

QuoiPOSIX.: L'interface système indépendante de la plate-forme pour un environnement informatique POSIX (interface de système d'exploitation portable pour les environnements informatiques) est une norme IEEE (Institut d'ingénieurs électriques et électroniques - Institut d'ingénieurs en génie électrique et radioélectronique.) Décrire les interfaces système pour Open OS, y compris les coquilles, Utilitaires et outils. De plus, selon POSIX, les tâches standardisées doivent assurer la sécurité, les tâches en temps réel, les processus d'administration, les fonctions de réseau et le traitement des transactions. La norme est basée sur des systèmes UNIX, mais permet de mettre en œuvre un autre système d'exploitation. POSIX a émergé comme une tentative de la célèbre organisation de l'IEEE pour promouvoir la portabilité de l'affiliation dans les environnements UNIX en développant une norme abstraite indépendante de la plate-forme. Par exemple, le système d'exploitation en temps réel QNX connu est conforme aux spécifications de cette norme.

Cette norme décrit en détail le système de mémoire virtuelle VMS (Système de mémoire virtuelle,), la technologie de transfert de système d'exploitation MRU Multitacking (exécution multi-processus) et de CTO (un système d'exploitation produit une technologie convertie ...). Ainsi, en fait, POSIX est un ensemble de normes appelées POSIX.I -POSIX.12. Il convient également de noter que dans POSIX.1 est censé la langue avec le principal

description de la langue des fonctions du système API.

Ainsi, les programmes écrits conformément à ces normes seront également exécutés dans tous les systèmes compatibles POSIX. Cependant, la norme dans certains cas n'est recommandée que. Une partie des normes est décrite très strictement, tandis que l'autre partie ne divulgue que superficiellement les exigences de base.

La mise en œuvre de l'API POSIX au niveau du système d'exploitation est différente. Si les systèmes UNIX dans leur majorité absolue se conforment initialement aux spécifications standard IEEE 1003.1-1990, Winapi n'est pas compatible POSIX. Toutefois, pour prendre en charge cette norme dans le système d'exploitation MS Windows NT, un module de support API spécial POSIX est saisi, fonctionnant au niveau de privilège des processus utilisateur.

Ce module fournit la conversion et la transmission des appels du programme utilisateur au noyau du système et à l'arrière, travaillant avec le noyau à travers l'API Win. D'autres applications créées à l'aide de WinapI peuvent transférer des informations sur les applications POSIX via des mécanismes de flux d'E / S standard (STDIN, STDOUT).

Pas de postes similaires ...

De grandes différences dans les spécifications de l'OSR et un grand nombre de microcontrôleurs existants avancent un problème de normalisation dans le domaine des systèmes en temps réel.

La norme la plus précoce et la plus répandue de l'OSR est la norme POSIX (interface de système d'exploitation portable IEEE pour l'environnement informatique, IEEE 1003.1). La version initiale de la norme POSIX est apparue en 1990 et était destinée aux systèmes UNIX, dont les premières versions sont apparues dans les années 70 du siècle dernier. Les spécifications de POSIX définissent le mécanisme standard d'interaction entre le programme d'application et le système d'exploitation et incluent actuellement un ensemble de plus de 30 normes. Sept d'entre eux (1003.1a, 1003.1B, 1003.1C, 1003.1D, 1003.1J, 1003.21, 1003,2, 1003.2, 1003.21, 1003.2, 1003.1J, 1003.21, 1003,2, 1003.1J, 1003,21, 1003.2H) sont les plus importants (1003.1 A, 1003.2h), mais il n'y a que trois premiers appui au système d'exploitation commercial.

Malgré les positions clairement obsolètes de la norme POSIX et la plus grande demande de mises à jour de normalisation pour l'OSR, l'avancement notable dans cette direction n'est pas observé.

La norme POSIX a été créée comme une interface système d'exploitation standard. Cette norme permet de créer des applications portables. Par la suite, cette norme a été étendue par les particularités du mode temps réel.

Spécification POSIX Définissez le mécanisme d'interaction d'application standard et le système d'exploitation. Il convient de noter que la norme POSIX est étroitement associée à UNIX, néanmoins, les développeurs de nombreux OSR tentent de résister à la conformité à cette norme.

La conformité avec la norme POSIX pour le système d'exploitation et la plate-forme matérielle doit être certifiée par les ensembles de test exécutés. Toutefois, si le système d'exploitation n'est pas unix, de manière à résister à cette exigence devient une tâche difficile. Les ensembles de test n'existent que pour POSIX 1003.1A. Étant donné que la structure POSIX est un ensemble de capacités optionnelles, les fournisseurs de système d'exploitation ne peuvent implémenter qu'une partie de l'interface standard, tout en parlant du compliment POSIX de son système.

Malgré le fait que la norme POSIX ait augmenté d'UNIX "A, il affecte l'abstraction fondamentale des systèmes d'exploitation et l'expansion du temps réel est applicable à tout OSRV.

À ce jour, la norme POSIX est considérée comme une famille de normes connexes: IEEE STD 1003.N (où N est un nombre).

Aujourd'hui, nous allons essayer de déterminer ce que la norme POSIX décrit. Les normes sont destinées à garantir que mon ordinateur puisse interagir avec le vôtre. Grâce à eux, sur deux ordinateurs de page Web similaires ou une vidéo diffusée en temps réel sera égale.

Cependant, la norme est destinée à des tâches plus importantes qu'un simple échange de données entre les utilisateurs. Certaines normes définissent un modèle spécial, grâce aux caractéristiques qui sont significativement supérieures dans leur compatibilité de valeur de fichiers ou de réseaux. La norme POSIX fait référence à leur nombre.

Qu'est-ce que POSIX?

POSIX (prononcé "Posiks") est une interface système d'exploitation portable. Mais qu'est-ce que ça veut dire? Premièrement, vous devez désigner la portée du concept de "portabilité", dans ce cas particulier et déterminer le concept d'interface ". Pour en savoir plus, il est nécessaire de repousser du fait que les deux concepts sont inextricablement liés.

"Portabilité", dans le contexte de la norme POSIX, fait référence au code source (non aux fichiers binaires collectés à partir de ces sources mêmes). Découvrez maintenant quelle "interface" est. Dans la programmation, l'interface est l'interaction de votre code avec le reste du code. L'interface attend la fourniture d'informations spécifiques de votre code. Votre code, à son tour, implique d'obtenir certaines informations de l'interface. Un bon exemple est la fonction fopen () dans la langue de SI. Il attend des informations à partir de deux parties: le chemin du fichier et le mode dans lequel il sera ouvert. En utilisant ces données, le système d'exploitation renvoie un autre type d'informations appelé "descripteur de fichier". La poignée de fichier peut être utilisée pour lire le fichier ou écrire dans le fichier. Ceci est l'interface. De tout cela, il suit qu'un code compatible POSIX peut être compilé dans tout système d'exploitation compatible POSIX sans modifications majeures, ce qui signifie qu'il sera portable.

La liste des interfaces relatives à la norme POSIX est toutefois même malgré sa énorme longueur, il est possible qu'il soit déficient. POSIX ne se limite pas aux défis du système, il définit également des normes pour les coquilles de systèmes d'exploitation (étagères, autres interfaces de ligne de commande), utilitaires système, tels que "AWK" ou "ECHO", Bibliothèques système et de nombreuses autres choses.

La norme POSIX est apparue sous la forme d'un projet de Richard Pokalman en 1985 et a été décoré en outre comme IEEE STD 1003.-1998. Comme on peut le voir sur le nom, 1998 était l'année de publication officielle. Depuis lors, un grand nombre d'ajouts et d'extensions pour POSIX ont été libérés, ce qui se transforme progressivement en une famille entière de normes, officiellement appelée IEEE 1003, reconnu comme une internationale, avec la désignation de SO / IEC 9945, simplement appelée POSIX Standard de la famille.

Le système d'exploitation n'est pas du tout nécessaire d'être compatible POSIX ou encore plus disposant d'un certificat POSIX, mais il permet aux développeurs de créer des applications, des outils et des plates-formes, sans réécriture de code une fois par heure, mais seulement compléter et se connecter à -terminer. Il n'est également pas nécessaire d'écrire du tout un code compatible POSIX, mais cela améliore considérablement la portabilité des projets entre les systèmes d'exploitation. Cela signifie que la capacité d'écrire un code compatible avec la norme POSIX est précieuse en soi, et certainement très utile pour une carrière. De grands projets, tels que Gnome ou KDE, adhèrent à la norme POSIX, qui garantit leur travail sur différents systèmes d'exploitation. Le sous-système POSIX est mis en œuvre même dans les dernières fenêtres. Linux, comme vous le savez, prend en charge la plupart des appels système liés à la norme POSIX, ainsi que la large extension à celle-ci, appelée "Base Linux standard", conçue pour combiner des distributions Linux en termes de code source et de données binaires .

J'espère que nous versions la lumière à la question "Qu'est-ce que POSIX". Avoir des informations intéressantes sur le sujet? S'il vous plaît partagez-le dans les commentaires.

Avez-vous aimé l'article? Partager avec des amis: