New limit? Did you realize that since the 386 processor, CPUs were essentially 32-bit and capable of addressing larger amounts of memory. The issue here never was the hardware, it was the software. DOS was 16-bit, Win3.1 wasn't even a real OS...Windows95 was 32-bit but you know what, it wouldn't boot if you put 1GB of memory in your system. Keep it in the context here, the transition from DOS/Win3.1 to WIndows 95 (the first mainstream 32-bit OS), was shaky and not "immediate", as it is now with the 64-bit transition.
The transition now is also shaky and not immediate because the software sucks, at least in the Windows world, have you seen all of the problems people have been having with XP64?
Do you know what a DLL is? It's a SHARED LIBRARY. That means that programs can load them as required, or the DLL itself can be loaded into memory and made available to any program which needs it. Protected mode memory means that the data being stored at a given memory address for a given app or process cannot be accessed by other processes or apps. And yes, you can program your app in such a way that it poaches another instance's protected memory, and this is how you end up with app instability.
Actually the term "demand paged" is used to decribe files that are loaded as required. Protected mode is global, it's not per-process, per-mapping or anything else once the CPU transitions to protected mode the only way out is a soft reboot. And your app can't touch another process' address space unless you have priviledges to do so, on Windows that's part of the debugging rights and on unix you have to either own the process that you want to "poach", as you put it, or be root. And even then you can't just poke at random addresses to try and figure out which process they belong to, you have to use special functions because each process' VM will be different so you might have address conflicts.
Like I said, show me some programs you've written since you're so into talking about it like your Carmack's apprentice or something.
Like I have anything to prove to you, so far you're the one making bit claims about how easy multithreaded programming is and how everything will be multithreaded in the next year or so because everyone has 2 or more cores in their machines.
Right now development tools are not optimized for SMP programming, however they will be soon, and there will most likely be wrappers and APIs developed that dramatically ease the development of a proper multi-threaded app. Besides, you are not going to be the one doing any programming so why are you so worried?
If it was simply a matter of better development tools it would have been taken care of years ago. No IDE can decide how to break up your program into threads because it's not possible to programmatically determine what depends on what.
Did you notice that the things that use SMP now are mainly software apps that cost hundreds, if not thousands of dollars? What does SQL server go for? $25k? What does a studio-quality AV app go for...like Avid...guessing around $10K. Why do they cost so much? Because they make use of non-mainstream technology to provide substantial performance improvements. The reason SMP enabled games are few, and poorly implement is an ECONOMIC issue, not a technical issue. Now, that is changing...and now, developers who can utilize SMP in their games can potentially create much better games.
Funny, my first thoughts about multithreaded programs were of things like Apache, MySQL and ffmpeg which are free and open source.
Games are getting more complex, and there's no doubt that SMP can improve their performance if it is implemented effectively. Even if the game itself is SMP-enabled, the sound and video card drivers, as well as most supporting APIs are not. Hence, the minimal gains.
Do you think the Doom 3 game client was originally designed to be SMP from the ground up? Really?
You seem to have things backwards, as games get more complex they'll be more and more difficult to multithread. Sound and video drivers don't need to be multithreaded, their point of contention is the device they're driving so they've got no choice but to serialize on it. And in general the supporing APIs don't need be multithreaded since they're reentrant and can be called as many times as possible at the same time, otherwise they wouldn't be very useful.
And I don't know if Doom3 was designed for SMP from the ground up, I never looked into it until now and I couldn't find any concrete evidence either way. The process did have ~5 threads on this machine when I started it but as I said it didn't make any difference performance-wise.
There exists a freeware counterpart to almost every commercial app, but that's not what I'm talking about. You're comparing apples to oranges...do you think that if the freeware apps were being developed by paid programmers, they'd be any cheaper? The answer is no.
Wait, did you really just ask whether he thinks that if a app that sells for $0 was developed by paid programmers that they'd be less than $0? Unless the company paying those developers also pays you to use their app of course the answer will be no, you can't make something cheaper than free.
A program that is poorly written will be slow and unstable, regardless of whether it is multi-threaded or not. You really can't say that simply because you need more skill to do something, it is impractical or not worth doing.
Of course it can be impractical and/or not worth doing. If you're paying for development of an app you get to decide how much you're willing to spend on that whole development process and multithreading something makes the development process much more difficult and usually a lot longer. If you're doing the program yourself for free then whether it's worth it or not is determined by how much time you're willing to spend on the project, either way there is a value attached to the development process and multithreaded apps have a much higher development cost.
You all like to keep saying SMP is so difficult, and none of you are programmers...but that aside, anything worth doing isn't going to be easy...and that is something you can bank on.
A) You can't prove that we are or aren't developers.
B) Since you think multithreaded programs are so simple how about you show us some nice, simple example source code?