Inferno (styresystem)

For alternative betydninger, se Inferno. (Se også artikler, som begynder med Inferno)

Inferno[1][2] er et distribueret styresystem startet hos Bell Labs og nu udviklet og vedligeholdt af Vita Nuova Holdings som fri software under MIT-licensen.[3][4]

Inferno var baseret på erfaringerne med Plan 9 from Bell Labs, og Bell Labs' videre forskning i styresystemer, programmeringssprog, on-the-fly oversættere, grafik, it-sikkerhed, netværk og portabilitet.

Navnet på styresystemet, mange af dets tilknyttede programmer og det nuværende firmas navn var inspireret af Dante Alighieris guddommelige Komedie. På italiensk betyder Inferno "helvede", hvoraf der er ni cirkler i Dantes guddommelige Komedie.

Designprincipper

[redigér | rediger kildetekst]

Inferno blev skabt i 1995 af medlemmer af Bell Labs' Computer Science Research-afdeling for at bringe ideer fra deres tidligere styresystem, Plan 9 from Bell Labs, til en bredere vifte af enheder og netværk. Inferno er et distribueret styresystem baseret på tre grundlæggende principper:

  • Resurser som filer: alle systemresurser er repræsenteret som filer i et hierarkisk filsystem
  • Navnerum: et programs visning af netværket er et enkelt, sammenhængende navnerum, der vises som et hierarkisk filsystem, men som kan repræsentere fysisk adskilte (lokale eller eksterne) resurser
  • Standard kommunikationsprotokol: en standardprotokol, kaldet Styx, bruges til at få adgang til alle resurser, både lokale og eksterne

For at håndtere mangfoldigheden af ​​netværksmiljøer, det var beregnet til at blive brugt i, besluttede designerne, at en virtuel maskine (VM) var en nødvendig komponent i systemet. Dette er den samme konklusion af Oak-projektet, som blev til Java, men som man nåede frem til uafhængigt. Den virtuelle maskine Dis er en registermaskine, der er beregnet til at matche den arkitektur, den kører på, i modsætning til stakmaskinen på den virtuelle Java-maskine. En fordel ved denne tilgang er den relative enkelhed ved at skabe en just-in-time oversætter til nye arkitekturer.

Den virtuelle maskine giver hukommelsesstyring, designet til at være effektiv på enheder med så lidt som 1 MiB hukommelse og uden hukommelsesstyringshardware. Dens spildopsamler er en hybrid af referencetælling og en farveopsamler i realtid, der samler cykliske data.[5]

Inferno-kernen indeholder den virtuelle maskine, on-the-fly oversætter, scheduler, enheder, protokolstakke og navnerumsevaluatoren for hver proces' filnavnerum og roden af ​​filsystemhierarkiet. Kernen indeholder også nogle indbyggede moduler, der giver grænseflader til det virtuelle styresystem, såsom systemkald, grafik, sikkerheds- og matematikmoduler.

Bell Labs Technical Journal-artiklen, der introducerede Inferno, listede flere dimensioner af portabilitet og alsidighed leveret af styresystemet:[6]

  • Portabilitet på tværs af CPUere: Inferno kører i øjeblikket på ARM, SGI MIPS, HP PA-RISC, IBM PowerPC, Sun SPARC og Intel x86 arkitekturer og er let portabelt til andre.
  • Portabilitet på tværs af miljøer: det kører som et selvstændigt styresystem på små terminaler og også som en brugerapplikation under Bell Plan 9, MS Windows NT, Windows 95 og Unix (SGI Irix, Sun Solaris, FreeBSD, Apple Mac OS X, Linux, IBM AIX, HP-UX, Digital Tru64). I alle disse miljøer ser Inferno-programmer en identisk grænseflade.
  • Distribueret design: Det samme miljø etableres ved brugerens terminal og på serveren, og hver kan importere resurserne (fx de tilsluttede I/O-enheder eller netværk) fra den anden. Ved hjælp af runtime-systemets kommunikationsfaciliteter kan programmer nemt (og endda dynamisk) opdeles mellem klient og server.
  • Minimale hardwarekrav: det kører nyttige applikationer selvstændigt på maskiner med så lidt som 1 MiB hukommelse og kræver ikke hardware til virtuel hukommelse.
  • Bærbare programmer: Inferno-programmer er skrevet i det typesikre sprog Limbo og kompileret til Dis bytecode, som kan køres uden ændringer på alle Inferno-platforme.
  • Dynamisk tilpasningsevne: programmer kan, afhængigt af hardwaren eller andre tilgængelige resurser, indlæse forskellige programmoduler for at udføre en specifik funktion. For eksempel kan en videoafspiller bruge et hvilket som helst af flere forskellige dekodermoduler.

Disse designvalg var rettet mod at levere standardgrænseflader, der frigør indholds- og tjenesteudbydere fra bekymring for detaljerne i forskellig hardware, software og netværk, som deres indhold leveres over.

  1. ^ https://www.vitanuova.com/inferno/
  2. ^ https://github.com/inferno-os
  3. ^ "Inferno Licence Terms". Arkiveret fra originalen 2021-04-27. Hentet 2021-06-17. MIT
  4. ^ "inferno-os — Bitbucket". Hentet 2021-06-17.
  5. ^ Huelsbergen, Lorenz; Winterbottom, Phil (1998). Very Concurrent Mark and Sweep Garbage Collection without Fine-Grain Synchronization (PDF). 1998 International Symposium on Memory Management.
  6. ^ "The Inferno Operating System". Bell Labs Technical Journal (papers). Vita Nuova Holdings. 2 (1, Winter 1997): 5-18.

Yderligere læsning

[redigér | rediger kildetekst]
  • Stanley-Marbell, Phillip (2003). Inferno Programming with Limbo. Chichester: John Wiley & Sons. ISBN 0-470-84352-7. describes the 3rd edition of the Inferno operating system, though it focuses more on the Limbo language and its interfaces to the Inferno system, than on the Inferno system itself. For example, it provides little information on Inferno's versatile command shell, which is understandable since it is a programming language textbook.
  • Stuart, Brian (2008). Principles of Operating Systems: Design and Applications. Course Technology. ISBN 978-1-4188-3769-3., uses Inferno for examples of operating system design.
  • Atkins, Martin; Forsyth, Charles; Pike, Rob; Trickey, Howard. The Inferno Programming Book: An Introduction to Programming for the Inferno Distributed System. was intended to provide an operating-system-centric point of view, but was never completed.

Eksterne henvisninger

[redigér | rediger kildetekst]
Spire
Denne artikel relateret til styresystemer er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den.