[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GSOS Crash Protection or Recovery
On Mar 31, 10:31 am, amotyka <anthony.mot...@gmail.com> wrote:
> Is there anyhing I can install to add a degree of crash protection or
> recovery under GSOS? The only thing I dislike about the system is that
> when it crashes, it crashes completely and the only thing to do is
> restart. It would be useful to have a "resume to finder" or "switch to
> application" option.
> MultiGS has some promising features but it seems very fussy about
> which system extensions are installed, and for me one the main reasons
> for installing a transwarp and extra memory was to run a maxed-out
> finder: I hate to hold down the shift key and boot into the basic
> periwinkle desktop...though obviously this in itself could be
> considered a form of crash-protection.
> Thanks,
> Anthony
Sadly, the hardware design of the IIgs limits the possibility of this,
even if GS/OS had the *potential* to support it.
Modern system architectures will allow the underlying system software
to define software vectors (mini-programs) and have them run when
'faults' are encountered.
For instance, on the x86 architecture, executing an invalid
instruction would raise an exception that could be dealt with in
software. The same holds true for attempting to access invalid regions
of memory. This hardware fault trapping is what allowed operating
systems like DOS to (somewhat) gracefully respond to bad software.
To gracefully 'kill' an offending program, you must first be able to
detect that the program is doing something bad. To detect that, you
need to have the hardware report exceptions.
The IIgs has no such facilities. When you see a 'crash' into the
debugger, what you are witnessing is the CPU encountering a BRK
instruction, an invalid opcode, or some other condition that would
cause the system to break into the debugger.
Interestingly enough - GS/OS 'knows' who the owner of a block of
memory is when it is allocated. However, there is nothing stopping me
from stomping on any memory that I want in my programs - and without a
means of detecting these types of faults - you cannot respond to them.