Richard Neitzel (06/28/88)
Here at NCAR we are (or at least will be) using several realtime operating systems and kernals. However, in so far I as I know, there is no net group that has this special interest at heart. Therefore I am asking two questions: 1> Is there a mailing list for realtime OS's in general or any particular flavor in isolation? 2> Is there any interest in a realtime news group? Thanks, Richard Neitzel Computer Scientist National Center for Atmospheric Research
jca@homxc.UUCP (J.ANTROSIGLIO) (06/28/88)
In article <10450@udenva.cair.du.edu>, Richard Neitzel writes: > 2> Is there any interest in a realtime news group? I vote yes! -- John C. Antrosiglio AT&T Bell Laboratories Crawford Corner Road Holmdel, New Jersey 07733 ihnp4!{homxc|hotlf|hotld}!jca
young@pur-ee.UUCP (Mike Young) (06/28/88)
Richard, (1) I, for one, know of no existing forum for realtime OS discussions; and, (2) I'd like to see one started! Anyone else? Mike Young Purdue University EE Dept young@eg.ecn.purdue.edu
linimon@killer.UUCP (Mark Linimon) (06/29/88)
In article <10450@udenva.cair.du.edu>, Richard Neitzel writes: > 1> Is there a mailing list for realtime OS's in general or any > particular flavor in isolation? > > 2> Is there any interest in a realtime news group? > > Richard Neitzel This answer may be a little bit more than wanted, because for me realtime OS's tend to be bound to particular implementations. I discuss what I know discussions on the net about both, below. The closest thing is the newsgroup comp.periphs, where bus-based systems tend to be discussed, including VMEbus, which tends to include system discussions of things like VxWorks occasionally, or other kernels. VxWorks came up as a discussion point in comp.protocols.tcpip as well. There is a "VMEbus" mailing list, heavy quotes here, it only applies to the AT&T processor board which has about .01% of the market. Typical AT&T marketing. Not much discussion of the software. There are at least 4 VMEbus companies on the net, in general I think they just tend to read and not contribute, like Mizar has. There is a comp.os.os9 (I think that's the name) group for the OS/9 operating system. Microware (the authors) are in on it but the group is fairly quiet. Comp.os.misc picks up on real-time but only rarely. As for me, I would be interested in either mailing lists or newsgroups on the following: 1. Real-time systems, such as VxWorks, VRTX, pSOS, etc. (disclaimer: Mizar uses first two out of those three). 2. Bus-based products, such as VME, Multibus I/II, STD, Nubus, Futurebus, etc. Possibly the charter of comp.periphs could be expanded to include the latter, since it does by default anyway, possibly also the former if people feel it is worthwhile. I'm willing to accumulate emailed replies in terms of interest, and/or ^^^^^^^ to serve as a reference point, moderator, or whatever would help. Mark Linimon Mizar Digital Systems uucp: sun!convex!mizarvme!linimon killer!linimon ;guest account snail: 1419 Dunn Drive Carrollton, TX 75006 (214)446-2664 x8044
ward@cfa.harvard.EDU (Steve Ward) (06/29/88)
In article <4631@killer.UUCP>, linimon@killer.UUCP (Mark Linimon) writes: > In article <10450@udenva.cair.du.edu>, Richard Neitzel writes: > > 1> Is there a mailing list for realtime OS's in general or any > > particular flavor in isolation? > > > > 2> Is there any interest in a realtime news group? > > > > Richard Neitzel I would like to see a realtime OPERATING SYSTEM discussion group, so make my vote "yes." >
eugene@pioneer.arpa (Eugene N. Miya) (06/30/88)
I'm somewhat interested in real time OS (for spacecraft control), but I don't think many manufacturers of machines are interested because most do surpisingly poor time keep on systems (this is an artifact, and outcome, not a requirement). They view the market place as small. This is too bad. SO what are the topics? A good notation (please Ada(tm) isn't the end all 8-) scoping (time, syntactic, semantic) rules Tasking control (interface) Exception handling (exception scope) I/O Realtime in a uniprocessor environment versus a multiprocessor environment Types of hardware support (or lack of) Obviously many others The event model of real time is kind of a shitty model. So start discussing and justify the need for a RTOS group. Another gross generalization from --eugene miya, NASA Ames Research Center, eugene@aurora.arc.nasa.gov resident cynic at the Rock of Ages Home for Retired Hackers: "Mailers?! HA!", "If my mail does not reach you, please accept my apology." {uunet,hplabs,ncar,decwrl,allegra,tektronix}!ames!aurora!eugene "Send mail, avoid follow-ups. If enough, I'll summarize."
jerry@wrs.UUCP (Jerry Fiddler) (06/30/88)
In article <10450@udenva.cair.du.edu> Richard Neitzel writes: >Here at NCAR we are (or at least will be) using several realtime operating >systems and kernals. However, in so far I as I know, there is no net group >that has this special interest at heart. Therefore I am asking two questions: > > 1> Is there a mailing list for realtime OS's in general or any >particular flavor in isolation? Not that I know of, although we have toyed with the idea of setting one up for VxWorks specifically. > 2> Is there any interest in a realtime news group? Definitely! I put out the same inquiry over a year ago and got some interest, but I never followed up through all the right channels. Let me know if I can be of any help. -- Jerry Fiddler Wind River Systems {sun,rtech}!wrs!jerry
lee@turing.unm.edu (Lee Ward) (06/30/88)
Why not start the discussion in this group and if traffic warrants create another? os.misc doesn't have a lot of traffic so it shouldn't be too much trouble should it? --Lee (Ward)
yuval@taux01.UUCP (Gideon Yuval) (07/02/88)
I think a comp.os.realtime newsgroup would be a good idea. -- Gideon Yuval, yuval@taux01.nsc.com, +972-2-690992 (home) ,-52-522255(work) Paper-mail: National Semiconductor, 6 Maskit St., Herzliyah, Israel (alternative E-mail address: decwrl!nsc!taux01!yuval@uunet.uu.net)
ken@cs.rochester.edu (Ken Yap) (07/03/88)
Well look, the traffic in this newsgroup is so underwhelming so why not post the realtime OS stuff here? I would read it. If there is enough traffic you can justify another newsgroup. This "we need a newsgroup before we can have a discussion" is a stale argument. Look what happened to comp.std.internat and comp.fonts. Ken
webber@aramis.rutgers.edu (Bob Webber) (07/04/88)
In article <11053@sol.ARPA>, ken@cs.rochester.edu (Ken Yap) writes: > Well look, the traffic in this newsgroup is so underwhelming so why not > post the realtime OS stuff here? I guess the first question is: why are realtime OS's rare. Is it really so difficult to modify schedulers to give a certain process a guarenteed slice of cpu, guarenteed memory residence, and perhaps even priority on disk fetches? Of course, my own interests are in being able to do on a Sun the kind of graphics you can do on an IBM PC. This basically means being able to guarentee that certain things will get done in a given 60th of a second time slice. Is this the same neighborhood the ``real'' realtime people are interested in, or do they want finer grain control? --- BOB (webber@athos.rutgers.edu ; rutgers!athos.rutgers.edu!webber) p.s., > I would read it. If there is enough > traffic you can justify another newsgroup. This "we need a newsgroup > before we can have a discussion" is a stale argument. Look what > happened to comp.std.internat and comp.fonts. comp.fonts is a perfectly fine comp.* group. comp.std.internat is as good as any comp.std.* group (definitely a weak branch in the tree).
braun@drivax.UUCP (Kral) (07/05/88)
In article <Jul.4.06.44.39.1988.24362@aramis.rutgers.edu> webber@aramis.rutgers.edu (Bob Webber) writes: >I guess the first question is: why are realtime OS's rare. Is it really >so difficult to modify schedulers to give a certain process a guarenteed >slice of cpu, guarenteed memory residence, and perhaps even priority on >disk fetches? In my opinion the difficulty in Real Time OSs is *not* in the scheduler algorithm, but in guaranteeing a low maximum interrupt latency, and still providing useful services for the applications people to use. You have to be able to guarantee that any interrupt, or at least any interrupt of a set of classes of interrupt, be able to get service in a minimum amount of time. Furthermore, you have to be able to transfer control to high priority applications logic within a guaranteed amount of time. There is a trade off between offering a good set of services for the appications people (while still guaranteeing response time) - and thus giving them quick development time - and letting them have control over everthing, which means they have to do most of the work themselves (the OS just provides a kernel). -- kral 408/647-6112 ...{ism780|amdahl}!drivax!braun "I'll let you be in my dream If I can be in yours" DISCLAIMER: If DRI knew I was saying this stuff, they would shut me d~-~oxx
eugene@pioneer.arc.nasa.gov.arpa (Eugene N. Miya) (07/05/88)
Real-time OS are rare for several reasons. Don't "real-men" program these? [I'm a wimp myself.] Seriously, consider the consequences of many of these OSes: x-ray machines, radar systems, cars, weapons systems, robots, assembly lines. Why, you can kill people with some of these (as James Burke would say). I know one CS prof who believes a RTOS is no different from any other OS, but I know others who put them into completely different categories. Until this riff is resolved, you will have RTOSes. More students need to be shaken up and they have to work with these. Another gross generalization from --eugene miya, NASA Ames Research Center, eugene@aurora.arc.nasa.gov resident cynic at the Rock of Ages Home for Retired Hackers: "Mailers?! HA!", "If my mail does not reach you, please accept my apology." {uunet,hplabs,ncar,decwrl,allegra,tektronix}!ames!aurora!eugene "Send mail, avoid follow-ups. If enough, I'll summarize."
linimon@killer.UUCP (Mark Linimon) (07/06/88)
In article <Jul.4.06.44.39.1988.24362@aramis.rutgers.edu>, webber@aramis.rutgers.edu (Bob Webber) writes: > Of course, my own interests are in... > being able to guarentee that certain things will get done in a given > 60th of a second time slice. Is this the same neighborhood the ``real'' > realtime people are interested in, or do they want finer grain control? > > --- BOB (webber@athos.rutgers.edu ; rutgers!athos.rutgers.edu!webber) > To some extent, the phrase "real-time" has become marketingspeak. Several classes of applications exist. Heavy image processing applications may require response down in the 1 to 10 microsecond range. (Obviously beyond a certain point you have to build dedicated hardware, sometimes in conjunction with a slower microprocessor. This is fairly common). Machine control applications oftentimes are satisfied by response times in the low milliseconds. Most anything moving a stepper motor or engaging a solenoid will be in this category. As far as I can tell the common denominator that various people use the "real" in "real-time" to mean, is that the response is *guaranteed* to happen within this time. In this sense an (untweaked) Unix kernel is not real-time, due to its statistical behavior. (Several manufacturers have done such tweaking, by the way). I am currently trying to gather together my notes and lists of various real-time products on the market. Further input solicited by email, I will try to summarize to this newsgroup within two weeks, maybe by the end of this week. Mark Linimon Mizar Digital Systems sun!convex!mizarvme!linimon
ron@topaz.rutgers.edu (Ron Natalie) (07/06/88)
Real time OS's aren't much harder than anything else. Most computer manufactueres offer their own real-time operating systems, the problem is that there is no real portable, nice OS like UNIX to do real time. Mostly because the demand just isn't there. We live in a time share world. Many of us who have worked in research labs have hacked real time support into UNIX of one sort or another. As is usually the case in RealTime support in a timesharing operating system, you essentially give tyrannical powers to certain user mode processes. Hence, real time really works best on standalone systems. _Ron
daveb@geac.UUCP (David Collier-Brown) (07/06/88)
In article <3574@drivax.UUCP> braun@drivax.UUCP (Kral) writes: >In article <Jul.4.06.44.39.1988.24362@aramis.rutgers.edu> webber@aramis.rutgers.edu (Bob Webber) writes: >>I guess the first question is: why are realtime OS's rare. Is it really >>so difficult to modify schedulers to give a certain process a guaranteed >>slice of cpu, guaranteed memory residence, and perhaps even priority on >>disk fetches? In article <3574@drivax.UUCP> braun@drivax.UUCP (Kral) writes: >In my opinion the difficulty in Real Time OSs is *not* in the scheduler >algorithm, but in guaranteeing a low maximum interrupt latency, and still >providing useful services for the applications people to use. > >You have to be able to guarantee that any interrupt, or at least any interrupt >of a set of classes of interrupt, be able to get service in a minimum amount >of time. Furthermore, you have to be able to transfer control to high priority >applications logic within a guaranteed amount of time. > >There is a trade off between offering a good set of services for the >applications people (while still guaranteeing response time) - and thus giving >them quick development time - and letting them have control over everything, >which means they have to do most of the work themselves (the OS just provides a >kernel). Well, you can simplify the problem of providing response substantially by considering different scheduling **strategies**. By "strategy", however, I mean something much different from giving some process a guaranteed slice of cpu (guaranteed memory residence, priority on I/O, etc). David Cheriton proposed scheduling processes at system load time, based on knowledge of the time require to complete a given time-critical task and its frequency. This allows one to put a bound on what processes will be allowed to be run in "real time" on a given processor with known interrupt latency and known process-switch times. The result is that you don't really have priorities at all, you have requirements and resources to satisfy them. It is surprising how much easier this can make the "guarantee performance" problem (:-)). It is, of course, not sufficient. You still need fast interrupts and process switches for faster and faster real-time requirements. It merely takes the risk and kludgery out of the configuring and makes it easier to satisfy some real-time tasks on a machine with a rich (Unix-like) suite of software development capabilities. See Cheriton on "The V System" (sorry, I've lost the correct reference) and the rumor mill re the new Japanese real-time kernel... --dave (I remember Thoth) c-b -- David Collier-Brown. {mnetor yunexus utgpu}!geac!daveb Geac Computers Ltd., | "His Majesty made you a major 350 Steelcase Road, | because he believed you would Markham, Ontario. | know when not to obey his orders"
baker@necbsd.NEC.COM (L. BAKER) (07/06/88)
From article <3574@drivax.UUCP>, by braun@drivax.UUCP (Kral): > In my opinion the difficulty in Real Time OSs is *not* in the scheduler > algorithm, but in guaranteeing a low maximum interrupt latency, and still > providing useful services for the applications people to use. > > You have to be able to guarantee that any interrupt, or at least any interrupt > of a set of classes of interrupt, be able to get service in a minimum amount > of time. ...you have to be able to transfer control to high priority > applications logic within a guaranteed amount of time. > > There is a trade off between offering a good set of services for the > appications people (while still guaranteeing response time) - and thus giving > them quick development time - and letting them have control over everthing, > which means they ... do most of the work themselves (the OS just provides a > kernel). I do real-time programming for a living, and I have a few comments. I don't claim to be a wizard or even merely knowledgable about generic real-time operating systems, but I have learned a few things over the last year that apply. First, it's not the interrupt itself that requires a minimum response time, it's the event that that interrupt represents. Consider, for example, a thing that acts as a `timer' - causing a prescheduled `time-out' event to occur at a specific moment. This may not work well with a hardware clock, since only a finite number of time-out interrupts can be set. To handle a large number of prescheduled events, or events that are scheduled beyond the immediate resolution of the clock, a `clock handler' has to exist that repeatedly resets the clock and checks to see what's being activated at this particurlar interrupt. The time-out `event' that the clock interrupt would represent, and the task/process/code that will have to be started to handle it are what require the fixed minimum latency. The actual hardware clock handler is itself really an interrupt handler. Anything it activates is an event handler. With this model of real-time computation the events, as initiated by the hardware interrupt-handlers, are the fundamental schedulable entities. It may be more important, for example, to handle something that requires 0.001 sec. resolution than something that requires 1.0 sec resolution. Rather than treat the individual event handlers as time-share entities with priority levels, the higher-priority item is handled first, because of the priority level of the event that activated it, then the lower priority one. This gaurentees that the events requiring the lowest latency times receive the fastest response. So to me the difference between a generic real-time system and a generic something else kind of system *is* the scheduler. The scheduler is no longer scheduling processes per se, but scheduling events. Any additional scheduling that is required in the traditional sense, e.g. spreading around unused CPU to other processes that can use it, becomes a `background' consideration. Also, If you accept this distinction then there really isn't an application layer; the event driven nature of the system turns the entire application into one huge state-machine model of the computation being performed. Thus the `applications' are really the event handlers and the subsystems they control. In a sense, the `events' are themselves software interrupts. But since they are software entities, similar to messages in a message passing operating system, they can be traced, controlled and simulated. This makes software development and testing for these systems far more manageable since the scenaios being tested are much easier to simulate and reproduce. Larry Baker, NEC America Switching Systems Division, Dallas TX Uucp: { harvard | husc6 | ames }!ut-sally!necssd!baker Internet: baker%necssd.uucp@cs.utexas.edu
stan@shell.com (Stan Hanks) (07/12/88)
Just a quick question, while we're talking about realtime OS: what is the nominal interrupt dispatch time for Unix (time from the the hardware interrupt line being yanked until your interrupt handler is executing)? If you post some info on this, please include * the type of hardware you are using * the which version of Unix you are using * how you determined the time involved Thanks. If you mail direct to me, I'll summarize to comp.os.misc. Please post follow-ups to comp.os.misc. Stan Hanks Research Computer Scientist, (and Postmaster!) Shell Development Company, Bellaire Research Center (713) 663-2385 ...!{sun,psuvax,soma,rice,decwrl,cs.texas.edu,ihnp4}!shell!stan stan@rice.edu Stan Hanks Research Computer Scientist, (and Postmaster!) Shell Development Company, Bellaire Research Center (713) 663-2385 ..!{sun,psuvax,soma,rice,decwrl,ut-sally,ihnp4}!shell!stan stan@rice.edu
jerry@wrs.UUCP (Jerry Fiddler) (07/13/88)
I think Larry has put his finger very well on one aspect of a real-time system; that of being event-driven. Just for discussion's sake, here's a list of some of the other requirements that I usually think of as differentiating a real-time from a non-real-time environment. - Event-Driven This is an essential difference from something like a Unix system. A real-time system's primary function is usually to to respond to real-world events and act upon them in a timely and predictable fashion. - Pre-emptive, multi-tasking scheduler The scheduler must be absolutely pre-emptive; e.g. the highest priority task that is ready to run at any given time must be running. When a high priority task becomes ready (presumably because of a real-world event, I/O completion, or timeout) it must pre-empt any lower priority task that might currently be running. An corrolary of this idea is that is critical to minimize the times that the OS itself does not allow task pre-emption. For instance, when a low priority task is in the OS itself, can it be pre-empted? This is a serious architectural consideration. - Easy Connection To And Prompt Response To Interrupts Because most real-world events announce themselves to the computer as interrupts, it is important for an application to connect and respond to interrupts easily and effectively. - Effective Communications Between Tasks, and Between Task and Interrupt Level Most real-time problems seem to require multiple tasks working on the same problem. This is essentially different than, for instance, a typical timeshare system where there is minimal (hopefully) interaction between, say, two different editors run by two people. Therefore, there is often considerable communications between the tasks. Also, since most processing should be done at task level (for prioritization and queueing purposes) it is important to be able to easily communicate from interrupt to task level. For these reasons, the communications models are usually different for real-time systems. - Closeness to Hardware In Unix-like systems, the application is kept as isolated as possible from the underlying hardware. In a real-time system, where the application needs to interact with the real-world, this is not desirable. - Ability to Run with Available Resources Diskless? ROM-based? Minimal RAM? This, of course, is application-dependent. - Ability to keep things locked in memory When the nuke plant is about to blow up, you don't want the alarm task swapped out to disk! This is just a quick list and I'm sure I've forgotten some things. There are many other properties that are often desirable (distributed systems facilities, multiprocessing, specialized development environments, etc.) that may be desirable or necessary for any given application. Maybe the overriding idea here is that the main difference between real-time and non-real-time systems is not just speed (although that is certainly important) but architecture. OK. Let the flames begin. -- Jerry Fiddler Wind River Systems {sun,rtech}!wrs!jerry
scottg@hpiacla.HP.COM (Scott Gulland) (07/13/88)
> / hpiacla:comp.os.misc / stan@shell.com (Stan Hanks) / 10:18 am Jul 11, 1988 / > Just a quick question, while we're talking about realtime OS: > > what is the nominal interrupt dispatch time for Unix (time from the > the hardware interrupt line being yanked until your interrupt handler > is executing)? I can't remember that exact timing, but it is loooong. Something on the order of 2.0 milli-seconds on a totally quiescent system and 9.1 milli-seconds on a reasonable busy system. The averages are more like 0.8 and 1.3 milli-seconds respectively. Note that in real-time systems you should be asking for worst case rather than nominal. It does do much good if nine times out of ten that critical interrupt is handled just fine but on the tenth try you melted down your reactor because it took a hair too long to open a valve. These figures are for an HP9000/S840 running under HP-UX 2.0, a real-time Unix operating system. I am assumming that by interrupt handler you mean a user process for handling the interrupt. In this case the handler in these measurements is a real-time process which has the highest priority on the system. These measurements were taken using logic analyzers. ************************************************************************** * Scott Gulland | {ucbvax,hplabs}!hpda!hpiacla!scottg [UUCP] * * Indus. Appl. Center (IAC) | scottg@hpiacla [SMTP] * * Hewlett-Packard Co. | (408) 746-5498 [AT&T] * * 1266 Kifer Road | 1-746-5498 [HP-TELNET] * * Sunnyvale, CA 94086 USA | "What If..." [HP-TELEPATHY] * **************************************************************************
ward@cfa.harvard.EDU (Steve Ward) (07/14/88)
.... .... Many features and functions of realtime OS's have been put forth to describe what is a realtime OS. I have a few "peanut gallery" comments to add: I would be more rigid in stating that a realtime OS is predictable -- a realtime OS is totally deterministic by design. Indeed, this is the cornerstone of a realtime OS. This means for any given description of the current state of the machine/OS/application (state of the machine) it can be exactly determined what the machine function/action/timing will be (next machine state). I emphasize "determine exact timing." A realtime OS must be event driven and use preemptive task scheduling and allow full, direct, and "easy" use of interrupts, as has already been stated. Additionally, this must mean that interrupt support allows interrupt routine context switch activation. This means that not only must one be able to change process priorities from an interrupt routine and then request a context switch but the request for the context switch (or request to reschedule a process or however you want to describe it) must be immediately and predictably executed. Many "realtime" OS's will accept the context switch request but will wait until a future realtime clock timeslice to actually perform the task rescheduling. The interprocess communication mechanisms (signals, or whatever) should also be "reliable." It should not be possible to lose signals (or whatever the IPC method). Either the set/reset/arm protocol must be bulletproof, preventing the possibility of loss of signals by design of the protocol, or (or both) signals must be queued. In fact, any realtime communication mechanism must be guaranteed by design to be totally reliable. This is not needed (and not available!) for timeshare systems since if one signal generated by a character arrival is lost or not sent, not to worry, the next character in will generate a signal or its signal will be received. The application code is usually written to accomodate such "loose" signalling and the resultant "loose" timing is not an issue. (except when one is really trying to do realtime programming on UNIX :-) This is admittedly simplistic example, but it hopefully makes the point. Another galling point is the difficulty one often encounters in dealing with OS modes. The OS may purport to be realtime and do many desirable realtime things, but one finds out that many of the functions can only be used/invoked in protected OS or hardware machine modes. Further, it is common to find it difficult to use or invoke these modes. This is ridiculous. All realtime OS functions and machine modes should be easily manipulable by the realtime programmer. If doing this is complicated, arcane, or mystical, then the OS should include full libraries and certainly full documentation. In any case, the realtime programmer should not have to do what would otherwise be construed as system programming to do realtime programming. This philosophy should extend to all programming areas such as device drivers and interrupt handlers. For timeshare systems and users these ARE system (programming) functions, but for the realtime programmer these are USER APPLICATION programming functions. The realtime OS should make programming in these areas as simple and direct as most timeshare user programming interfaces/environments. As an aside, I personally feel that the true realtime engine is best implemented in hardware without paging/swapping MMU hardware. Simple memory protection-only schemes are fine, but virtual memory inflicts complication and unpredictability. If one must implement a realtime OS on hardware with an MMU, particularly with virtual memory, the realtime OS ought to turn the thing off and leave it off. If the MMU presence inflicts itself in any way on the hardware operation then there should be libraries to simply deal with any possible MMU interaction (ex. mapping hardware I/O registers into a process space at any chosen process/machine level such as user, kernel or whatever). Steven Ward Harvard-Smithsonian Observatory ward@cfa (BITNIT, UUCP) NASA SPAN: CFA3::SWARD .