From: billwolf%hazel.cs.clemson.edu@hubcap.clemson.edu (William Thomas Wolfe,2847,)
Subject: Re: Reusing Ada tasks
Date: 31 Mar 89 02:22:22 GMT [thread overview]
Message-ID: <4964@hubcap.clemson.edu> (raw)
In-Reply-To: 796@aber-cs.UUCP
From article <796@aber-cs.UUCP>, by pcg@aber-cs.UUCP (Piercarlo Grandi):
> In article <9274@claris.com> peirce@claris.com (Michael Peirce) writes:
> >2. When a task has completed its execution, termination is delayed until all
> > dependent tasks have terminated (9.4.6). As a result, our program
> > fills up all memory with completed tasks unable to terminate. Why is
> > this? Can something be done about it (without altering task dependency)?
>
> The way we dealt with this problem was to reuse our tasks. We had
> a situation where we wanted to dispatch a handler task for each incoming
> request from the network. In Vax Ada, the tasks weren't removed from
> memory until after the program exited the scope of the task declaration.
>
% This is all nice and true, but of course hardly satisfactory. It essentially
% defeats the idea of using dynamically created tasks. [...]
%
% There is another problem with Ada tasking, and it is well known to those
% who know OS/MVS and IMS. When an Ada task takes a page fault, the entire
% address space is suspended waiting for resolution of the page fault;
% another Ada task is not redispatched, even if it could, because on virtually
% all the Ada implementations I know of (notably the VMS one) the OS does not
% know about Ada tasks at all. [...]
%
% There are only two solutions, one fairly horrible, having a signal delivered
% by the OS on a page fault to the in-address space scheduler, the second
% and proper one is to have threads in the OS and associated Ada tasks with
% the threads. Unfortunately the second one can be fairly expensive, many
% systems have high overhead threads (e.g. OS/MVS).
Similar problems have plagued those who try to do multitasking in
other languages as well. The "task reuse" solution has been the
most popular workaround. But Ada tasking is not at fault: the
problem lies solely with the OPERATING SYSTEMS. They use up
large amounts of time modifying various data structures every time
a process is created, and do this blindly without engaging in the
task reuse optimization that application programmers are now having
to program ON TOP OF the operating system.
So why aren't these operating systems being UPGRADED to
support current applications programming requirements???
Bill Wolfe, wtwolfe@hubcap.clemson.edu
next prev parent reply other threads:[~1989-03-31 2:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1989-03-30 11:53 Two questions Piercarlo Grandi
1989-03-31 2:22 ` William Thomas Wolfe,2847, [this message]
1989-04-04 2:00 ` Reusing Ada tasks Bob Hathaway
1989-04-13 0:46 ` Two questions Paul Stachour
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox