Phoebus Dokos writes:

> <snio>
> >I see only two possible solutions for QDOS/SMS:
> >
> >(1) A higher rate for the frame intterrupt (disadvantage: higher system
load)
> >
>
> This would be feasible I think without too much problems for the system.

Not really a good idea, I think. As Peter demonstrates with his example,
there isnt really an issue with the scheduler frequency. In most cases a
job is serviced more often than 50 times a second, in fact 20 milliseconds
is the max time between scheduler calls.

> <snip>
>
> I always believed that the way I/O is implemented might have been good for
> extremely slow peripheral devices and with media that wasn't exactly
reliable (ie
> making sure that SuperBasic for example did actually save the changes
before you
> could return control to it) but for today's requirements it is totally
obsolete.

But microdrive access, slow and unreliable as it is, did not hog the whole
machine, iirc. Why then floppies and hard drives?

> On the other hand and IIRC IOSS in itself is a different scheduler that
could be
> tuned without resorting to drasting measures (ie overhauling the whole
system).
> Please note that drivers (according to everything I have read) do not
> *NECESSARILY* have to get into Supervisor mode to go about their
business(sic!),
> it's just "strongly advised" (I quote from Adrian Dickens) that they
should do so.
>
> >Do you see what I mean? A simple job can cause *immediate* job
> >re-scheduling. A properly implemented device driver can not (as it
seems).
>
> See above... A properly implemented device driver can be in fact be a
simple job (or > have I got it all wrong) if the writer chose to, it's just
a lot simpler if you don't
> implement it that way because after that you have to cater for all sorts
of
> possibilities.

I think you will find that real hardware drivers need to work under external
interrupt or under the polling interrupt loop, ie they work in "supervisor"
mode.

> The "correct" implementation according to my VERY HUMBLE opinion would be
to
> implement the IOSS as a set of two jobs. One vectrored routine (along the
lines of
> what we have now (which would also ensure compatibility)) which would then
start
> the actual scheduler AND driver. According to the type of driver that
would be
> invoked that would close later if it wasn't needed or -in the case of a
say ethernet
> packet driver- keep on working... something like the DETACH command in
OS/2
> (remember that one?). You set it and forget it in other words... The
separate IO
> scheduler then (for drivers/jobs that were still in use) could be tuned to
our desired
> response..... (Or something like that in general). In theory we could have
two or
> three or more IOSS's running at the same time, all invoked from the same
vectored
> routine which would only serve as an entry point. (Not many, many more of
course
> as that would introduce other problems...)
>
>
> Maybe I got it all wrong myself.... I don't know we're just brainstorming
here :-)

Per


Reply via email to