forsyth20121205-174063a80cc13 years agoHistory
188 lines · 7.1 KB · Text
RawDownload
.TH INTRO 1.SH NAMEintro \- introduction to Inferno.SH DESCRIPTIONInferno is a virtualised operating system that canrun natively across a wide range of processor architecturesor hosted on a wide range of operating systems.The principal components of the system are:.IP •The Inferno kernel which can run both native and `hosted' on a range of platformsand which presents the same interface to programs in both cases..IP •The Dis virtual machine..IP •Styx - the tiny broad-spectrum file service protocol..IP •Limbo - a new simple, modular, concurrent programming language..IP •Tk and Prefab - graphical user interface (`GUI') primitives without a lot of goo..IP •The portable cross-development suites that allow any native Inferno platformto be cross-compiled on any hosted system..SS Manual conventionsThroughout this volume, manual entries are cross referencedby a notation of the form.IR entry ( n ),where.I entryis the name of the page (in italics) and.I nis the manual section holding the page.The same name may be found in more than one section.For example, the environment variable inspection commanddocumented in.IR env (1),is quite distinct from the module interface to environment variableswhich is documented in.IR env (2),which in turn is distinct from the component documented by.IR env (3),which describes the underlying device that implements environment variables..PPPathnames are understood to exist in the file system space visible fromInferno. The root of this space when viewed from the host operatingsystem is the Inferno installation directory, sometimes called theInferno root directory. Unless otherwise enabled, the result ofchanges made by Inferno programs to files in the file system spaceis generally restricted to this portion of the host file system..SS Name spacesOne of the great strengths of Inferno is the.I name spaceinterface to the resources available to a process,a hierarchical structurewhich looks very similar to a conventional file system.Resources look like files and directories that can be readand written, created and deleted in a way familiar tomost programmers..PPWhile this interface.I isused to provide programs with access to conventionaldisk-based filestore, it is also used to control devicesand user level programs.I mountedin a process's name space.Once a program or a device has been attached to a process'sname space, the program or device interprets any accessto the attachment point;it can synthesise on demand the names of new files or directories,create their contents on the fly as the process reads from them,and interpret written data as commands or data as appropriate(See.IR bind (1)and.IR sys-bind (2))..PPEach new Inferno process inherits its parent's name space,but it can divorce its own name space from that of its parent (see.IR sys-pctl (2)),giving programs the capability to attachresources to their own name space without making them globallyvisible. This per-process name space is potentbut potentially confusing, so, to help programs that might beconfused,.IR namespace (4)gives some conventions that should be adhered to if programsare to work properly. (That page also gives a general overviewof the Inferno source tree.).SS Start upSee ``Installation of the Inferno Software'' in Volume 2for details of how to start up Inferno..SS Window/development environmentInferno provides a powerful development environment in which to write, compile,execute and debug programs written in the Limbo language.It gives the developer a clean platform from which he can utilisean operating system which containsmany new and innovative ideas and some, carefully chosen,older concepts that have survived the test of time and are likely to befamiliar to most Plan 9 or Unix users..PPSuperficially, the Inferno shell.IR sh (1)looks and behaves much likeits Plan 9 or Unix contemporaries but, at heart, it is quite different.The shell takes advantage of the dynamic module loadingservices that Inferno provides to allow it to be dynamically extendedin appropriate and interesting ways. For example, by loading the.IR sh-tk (1)builtin module, a shell script can provide all the programming logicrequired to manage a.I Tkwindow with full.I Tkfunctionality in, surprisingly, few lines of code; by loading the.IR sh-file2chan (1)builtin module, a shell script can create a file in the name spacewhose properties are completely under the control of the script..PPThe Inferno windowmanager.IR wm (1)allows the user to manage the order and position of a dynamic collection of applicationwindows in which to perform various tasks..IR Acme (1)is targeted at programmers. It is an editor, a shell and window system all rolledinto one, which through thoughtful and consistent application of simple principlesresults in a rich and productive programming environment with a user interfacethat feels right..I Acmerequires a three-button mouse andattaches distinct functions to the three mouse buttons and, indeed, to chords of buttons tomaximise the productivity of the programmer's mouse. For more details of the.I Acmeuser interface see the paper"Acme: A User Interface for Programmers" in Volume 2..PPLimbo programs are compiled with.IR limbo (1). This compiles Limbo source into a machine-independent format (Dis) forexecution by the Inferno Dis virtual machine. The virtual machine is designed to provide safe execution of programs even on machines without memory protection.Debugging is made straightforward by use of either.IR stack (1), to display the execution stack of a processor, if a finer inspection is required,.IR deb (1),a novel window based debugger that allows the user to identify the exact location ofproblems, set break points and walk the data structures of any module loaded by the program. See "Program Development in Inferno" in Volume 2 for details on how to use thedevelopment tools that Inferno provides..SH SEE ALSO.nfSection (1) (this section) for the commonly-used commands.Section (2) for Limbo modules, including Inferno's system calls.Section (3) for kernel devices (accessed by `bind').Section (4) for file services (accessed by `mount').Section (5) for the Styx file service protocol.Section (6) for file formats and system conventions.Section (7) for databases and database access modules.Section (8) for administrative modules and system services.Section (9) for the reference for Inferno's Tk variant, Limbo/Tk.Section (10) for the build environment and device driver implementation..PPVolume 2 contains papers and other documentation about Inferno..PPThe back of this volume contains a permuted index..SH DIAGNOSTICSOn successful execution, a process can simply exit.Programs (modules) that wish to return error status tothe command interpreters.IR sh (1)and.IR mash (1)do so by raising a special exception (eg, using the.B raisestatement in Limbo).The exception's value is a stringbeginning with the text.RB ` fail: '..SH SEE ALSO.IR intro (2),.IR intro (3),.IR intro (4),.IR intro (5),.IR intro (6),.IR intro (7),.IR intro (8),.IR intro (9),.IR intro (10)