[Info-vax] Gartner report on VMS future.

Bob Koehler koehler at eisner.nospam.encompasserve.org
Tue Sep 22 09:28:07 EDT 2009


In article <g5idnS20eI-gTyrXnZ2dnUVZ_uidnZ2d at giganews.com>, "Richard B. Gilbert" <rgilbert88 at comcast.net> writes:
> 
> An AST is an interrupt, delivered at a priority of ASTDEL.  I don't 
> recall the numerical value of ASTDEL and I'm too lazy to look it up. 
> You declare a routine in your program that will service that interrupt 
> and your service routine is called at ASTDEL interrupt level.  See 
> chapter seven of "VAX/VMS Internals and Data Structures" by Ruth E. 
> Goldenburg and Lawrence J. Kenah, Digital Press, 1991.  ISTR that the 
> VMS documentation  also discusses the subject in some detail.

   I think ASTDEL is the interrupt priority at which the interrupt is
   delivered to the scheduler.  The scheduler implements the AST
   starting and winddown in whatever mode the AST is to be delivered at,
   which means it must be delivered at IPL 0 (only kernel code can run
   above IPL 0).  You can check the mode and IPL form within the AST
   and verify this (I have done so).

   Like an interrupt, ASTs can be asynchronous to the main thread of
   execution and cause that thread to be temporarily suspended.  Unlike
   interrupts, all ASTs for a given mode are delivered serially, there's 
   no priority (damn Ada for having "AST"s that are not serial).  If I 
   was trying to emulate ASTs on UNIX, I'd probably set up some kind of 
   signal mechansim, but if I were trying to do something generic and 
   portable I'd use POSIX threads to begin with, then worry about the 
   synchronization myself.
   
> The AST allows your program to do something else while waiting for a 
> $QIO I/O call to complete and with no need to loop checking the 
> completion  status.  I used ASTs in my programs about three times in 
> twenty years.  If you code in a high level language and use that 
> language's I/O package, you don't usually need to deal with them at all.

   Well, that's one use.  They are more general.  But I've used them
   since 1982 on a regular basis.  It depends on what kind of code you
   write.  For hard real-time interfaces to custom hardware ASTs are
   priceless.  For near real-time signalling across the cluster,
   doorbell ASTs are wonderfull.





More information about the Info-vax mailing list