🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: vmsnet.internals
Article #476

Re: Call for partly-baked ideas: $QIO replacement?

#476
From: Jeff Silverman
Date: Fri, 18 Dec 1992 07:56
40 lines
2652 bytes
jeh@cmkrnl.com writes:
>Are you happy with the $QIO system service?  If you were building a new O/S
>from scratch, would you make the "basic I/O call" that's available for 
>non-privileged programs look like $QIO, or like something else?  If the latter,
>what?  If you could specify a new I/O interface to supplement $QIO in VMS, what
>would it look like?
>	--- Jamie Hanrahan, Kernel Mode Consulting, San Diego CA
>Chair, Programming and Internals Working Group, U.S. DECUS VMS Systems SIG 
>Internet:  jeh@cmkrnl.com, hanrahan@eisner.decus.org, or jeh@crash.cts.com

Jamie,

	What an interesting question.  The way I see it, you have essentially
two ways of building an I/O interface: the way VMS/RSX do it and the way
UNIX/Ada/CP/M (I haven't studied MS-DOS or Windows NT or MVS closely enough
to decide which catagories they go into).  With VMS/RSX, you have a mechanism
by which an interrupt can be safely delivered to the process, while UNIX
and Ada really don't - you build tasks or threads which block until I/O is
completed.
	I assume that you are planning on building an O/S which can support
any language: C, Ada, FORTRAN, COBOL, Pascal, etc.  If you are building an
O/S which is oriented to a specific langauge, such as UCSD Pascal, Ada, or
Modula-2 then you have a simpler problem - don't bother providing any
functionality not supported by the semantics of the language.

	There is another aspect to the question which I just thought of.  One
of the characteristics of VMS which has always struck me is that number of
datastructures which get passed either by reference or by descriptor (VMS
is the only environment I know of which uses descriptors).  There are some
advantages and disadvantages of building a complicated data structure: the
overhead of stuffing the answers into the data blocks and then pulling them
out on the other side of the call.  Would it be easier to simply have long
argument lists?  It certainly seems more reliable to build the data structures
because the compiler can do some checking for you (for example, attempting to
stuff a 32 bit constant into a 16 bit space), and the compiler can keep track
of placing things in the right place.

	Jamie, why do you ask?

Jeff Silverman, Boeing Commercial Airplane
Technical Details
Message-ID: <BzG3Dy.FBy@bcstec.ca.boeing.com>
Path: arc1-ca.pugleaf.net!sparky!uunet!bcstec!silverm
References: <1992Dec16.113301.977@cmkrnl.com>

Show Full Headers
Complete Article Headers
Newsgroups: vmsnet.internals
Path: arc1-ca.pugleaf.net!sparky!uunet!bcstec!silverm
From: silverm@bcstec.ca.boeing.com (Jeff Silverman)
Subject: Re: Call for partly-baked ideas: $QIO replacement?
Message-ID: <BzG3Dy.FBy@bcstec.ca.boeing.com>
Organization: Boeing Computer Services
References: <1992Dec16.113301.977@cmkrnl.com>
Date: Fri, 18 Dec 1992 07:56:19 GMT
Lines: 41