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.
You are requested to modify the implementation of EPOS-- components such that the delete C++ operation preserves system consistency at the same time that it honors the programming language semantics.