EPOS abstracts system entities as ordinary C++ objects, thus
promoting usability. At some points, however, the semantics of
operating system and programming language do not seem to fit
together easily. Consider for instance the case in which a system
abstraction (say thread), created by the application
programmer with new, is destroyed by the operating
system (e.g. exit). Or the counterpart situation: the
application programmer deleting a thread that is
currently being manipulated by the operating system.
A careful binding between programming language and operating system must be defined to prevent undesirable side effects.
Modify the implementation of this didactic version of OpenEPOS
such that the delete C++ operation preserves system
consistency at the same time it honors the programming language
semantics.