^_^ - don't worry, i sometimes slip into common habits (I got frustrated after a convo I had with someone went along the lines of:
"OMG - I think someone is hacking my computer!
You sure?
Defiantly - there must be a hacker at another computer trying to hack me over the internet!
Even though your not plugged into the internet?
Oh"
but thats a different story

)
As for cracking,
It scared me the first time I heard that method. It was explained to me by someone who was employed to assess security risks 20 years ago, when things like the x86 architecture was being designed. It annoyed him because he, and others, were employed to make risks like this and others aware to the designers, who completely ignored the research, and went ahead and designed it how they wanted, not in the most security tight way.
As for having separate stacks: I believe that XP has individual stacks. Either way, any ring 0 program that can be exploited in that way will have the same effect, be it with a small local stack or part of a single stack for the entire computer.
Even if it is only a small stack that can only hold a bit of opcode until it runs into a descriptor boundary (then gets caught by a boundary error or protection fault etc.), it doesn't take much ring 0 opcode to alter the GDT to give itself all the space it needs.
In truth, there are 2 very simple ways to completely prevent this exploit.
1)Have the stack in a separate descriptor and make it non-executable or,
2)Better yet, bound check all inputs which will also prevent both buffer overruns present in my example.
3)Or best yet, do both of the above
As for other malicious access, there are many ways that programs can gain unauthorized access to a computer. This is just the only example that I know. There are people who make their living preventing such ways for a computer to be attacked and there are people who get much enjoyment in writing programs that find a way round the latest security.
I am fairly sure there is not a chance any single person can make a computer completely malware proof. What you need, on top of doing your best to protect your OS from such attack, is to have a part of it that can recognize when it has been compromised and do something about it.
If you end up doing everything by interpretation, they it would not be hard to make a detailed log of everything that happened leading up to the attack, which you can use to plug that hole and prevent it in the future.
As for your idea of communication between threads - that is the basis of a micro-kernal. e.g.
1)Process asks hard disk driver to load a file from the hard disk into memory.
2)Driver says 'Yes ok - wait a bit because the hard disk is very slow' (You get the idea)
3)Process tells the process manager that it is waiting for the hard disk driver before it can continue.
4)Process manager puts process to one side and allows a different process to run.
5)Driver tells both the process and the process manager that the data is ready to collect.
5)Process manager schedules process as the next to run after the current has finished.
6)Process runs and find that its data in now available and continues with whatever it was doing.
The End
(wow - the first ever use I have found for paying attention in OS lectures at uni rather than sleeping ^_^
most of OS lectures is about the fetch-execute cycle on a theoretical 'simple' processor - i.e. completely invented for people who don't know ASM or how to write operating systems)
I hope I'm not sending people to sleep reading my ramblings,
Andrew