Next Windows To Get Multicore Redesign
eldavojohn writes "A Microsoft executive announced that the next Windows will be fundamentally redesigned to handle the numerous cores of present and future processors. The article notes that the NT technology underneath Vista has been able to take advantage of multiple processors since 1993, and can now handle 32 or 64 cores. And since Microsoft completely rewrote the 20-year-old GDI/GDI+ model for Vista, what more can (or should) they parallelize? It will be interesting to see how Microsoft tackles the race conditions and deadlocks that come with pervasively multithreaded software and in the past complicated attempts (like that of BeOS) to utilize multiple CPUs. Do you think it's it a smart move to further complicate an operating system to take advantage of multiple cores, or should Microsoft stick to its knitting while applications take advantage of (possibly) more resources?"
Didn't they only just fundamentally rewrite Windows Vista?
Deleted
They're going to aren't they? Windows Vista '09 Multicore Edition, only valid for up to 16 cores, Windows Vista '09 Multicore Extreme Edition, 16-24 cores...
And so it goes.
Imagine a Beowulf cluster of multicore BSODs!
will be based on a BSD.
Unless they want another failure on their hands.
I can't wait - an OS designed through-and-through for multiple cores, and it's only six or more years away!
I have been waiting for something like this! Finally, an operating system and company that "just get it!" This redesign will restructure the world of computing just as WinFS and Monad di... oh, never mind...
And just to get a few jokes out of the way:
Finally! Something that will run Vista!
-and-
Does it come bundled with Duke Nukem Forever?
I suppose you've never seen /zombie processes in linux...
too bad most of us have.
Sigs are for the weak.
Now we all will have buy to 8core machines with 16G memory as a minimum model, based on what just happened with Vista.
How is that helping their customers? Oh yeah, DELL is their customer, not us.
You heard it here first.
There are three issues in multi-processor programming.
(1) OS and language support in the form of threading models
(2) OS and language support in the form of scheduling algorithms
(2) Application support in the form of using those threading models to develop program components that can run concurrently.
Let Microsoft focus on #1 and #2, and application developers focus on #3. The OS should not, IMHO, try to take a program that is not written to take advantage of multiple processors, and run it in a concurrent environment. That's just asking for trouble!
Advanced threading models that allow application developers better control over how their threads are executed, and scheduling algorithms that distribute threads across the multiple cores and processors, will pave the way for application developers to write applications that can truly benefit from a multi-core environment.
As an application developer, one of the biggest problems I've encountered in developing multi-threaded applications is the ability to easily control what can run concurrently, and what can't. I have almost no ability to tell the operating system which threads I want to run concurrently, and which I want it to time-share.
Let Microsoft, and language developers, focus on the first two tasks. Make the tools available to application developers, and let application developers take advantage of those tools.
sticking in a DVD still hang Explorer for the 5-10 seconds it takes to spin up and read the TOC?
/frank
How many years has Windows had this obvious, annoying flaw?
And the worms ate into his brain.
im not sure about your computer but on mine with 4 cores. just using MS software only uses 1 core by default. i have to specificly go into the task manager and move processes to another core. which the user shouldnt have to do. which means my $4k computer is only getting to utilize 1 core. also new threads are only started on the processor that the original executable was started on from what i can tell. so if i have an app with 64 threads running and a computer with 64 cores. 63 sit doing nothing. why cant i have 1 thread per processor? looking at the win32 documentation i cant even tell it to create the thread on another processor if 1 exists.
Seems to me that the best way to do multicore code would be to create a highly modular design, which could result in less complicated code if done right.
Surely some individual modules may become more complicated, but the system as a whole would probably end up a lot cleaner.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
After years of wait, Minesweeper gets the multi-core treatment! Now I won't have to suffer those lousy frame rates.
... that read "parallelize" as "paralyze"
Why bother talking about multi core supporting operating systems when we still haven't embraced 64-bit technology yet. Why bother pushing for a new technology when the current 'new' technology hasn't even been implemented yet. IMHO, Microsoft should have made Vista 64-bit only and kept XP alive for the 32-bit people who don't want to migrate. This would force people to write 64-bit drivers and software in order to be on 'average Joe's' new PC. Instead, they've done what they've been doing for the past 30 years, compromising due to lack of adaptation.
Now I'm no supporter of Microsoft. I personally hate them. But you have to see where I'm coming from.
I recently built a new PC for my parents. It was a simple box with a Sempron 3000, 1gb DDR, 80Gb HDD, etc. It was all 64-bit compatible so I though Vista Home Premium 64-bit would be the best way to go. Their scanner isn't supported, their antivirus isn't supported, and the devices and software they use that DO work on Vista, are all running in 32-bit mode because there is no equivalent for 64-bit.
Please lets implement the great technology we have before concentrating on the future.
You moved your mouse. Please restart Windows for changes to take effect.
#define MAX_NUM_CORES 128
Okay, we're good for another few years.
Prov 9:8 Do not rebuke mockers or they will hate you; rebuke the wise and they will love you.
NT has always been a multiprocessor OS.
The big problem with NT is its "Message Passing" architecture, whereby
various components of the OS talk to each other by putting messages on queues
(In the *nux model you just call the function you need.)
The weakness of the architecture is that the component handling any one
message queue is automatically single threaded and tied to a single processor.
Which is OK for 2 or four processor systems but in 16 or 34 processor
systems 12 or 30 of your processors are wasted.
However I expect the idea of any resources being available to the application
is an anathema to Redmond so they will fix this problem to ensure that VISTA
keeps its design goal to consume 90% of available resources.
Old COBOL programmers never die. They just code in C.
The two words I was least hoping to hear about the next version of Windows. I don't want to wait 5 - 8 more years for a new OS again. I had been hoping Vista would be like ME - quickly replaced and forgotten.
Unpleasantries.
EFI support. Oh, wait. Then they'd be copying Apple, right?
This is a sample sig. Press F1 to personalize.
Actually I've never seen them on a Linux platform. Zombies are not a problem though. See here for example.
What I've seen that is a problem are processes in "D" state (ininterruptible sleep waiting for the end of an I/O IIRC), usually happening with bad drivers / bad hardware.
But contrary to the windows platform, it never clutters your desktop, as you can "xkill" X ressources even if the program still uses ressources in the background.
I have discovered a truly marvelous proof of killer sig, which this margin is too narrow to contain.
This is all very nice they are doing this, but the need is now. Not just for windows, but all the apps have to become multi-core aware. Right now having a dual or quad core for most apps is like having a care with an extra engine or two in the trunk not connected to any drivelines. CPUs have hit a wall in terms of speed because of heat, so the manufacturers are giving us mulit-core. Very nice, but consumer-level apps that use them would be nice. Some professional apps are multi-core aware, but at the consumer level...
And preferably this year, not 2009
NT and 2000 wasn't bad. But 95/98/ME/ (sometimes XP) seem to poorly destroy hung processes. Just my view, to be honest I very rarely use windows. Been running Linux since '96 and run it at work too. So maybe it's better now.
Yeah, I see them all the time. They don't usually bring down the OS though.
:-)
Brains, brainssss!!!
Sorry, couldn't help it
No matter where you go... there you are.
ur pretty dumb lol
You can do a pretty harsh kill with 'delete' using WMIC, but I don't think it's available on XP Home. Realistically, though, most of the time if 'end process' doesn't work from Task Manager, you're just gonna take the system down by getting aggressive.
Unpleasantries.
It seems that they've already begun to develop services akin to the message passing systems in Erlang and Mozart-Oz. Given that those message passing systems are how those languages avoid the vast bulk of problems described, it seems likely that their attempts to prevent these problems are in fact well underway.
StoneCypher is Full of BS
Microsoft's programmers were so tired from the complete redesign between Windows 95 and Windows 2000, and the complete redesign between 2000 and XP, and the complete redesign between XP and Vista. They've written three operating systems almost from scratch in the past twelve years!
I am a believer of momentum and curves.
There's an option: "Launch folder windows in separate processes".
See if you can find it...
No sig today...
Imagine a beowulf clusterfuck of these.
Kwisatz Haderach
Sell the spice to CHOAM
This Mahdi took Shaddam's Throne
"just using MS software only uses 1 core by default" Really depends on which software you're using. A lot of applications like Word, Excel, etc don't usually do process-intensive tasks and the act of spreading the work over multiple threads would actually decrease performance (there is overhead for each thread, context switches, etc). Those apps are more often IO-bound... either waiting for user IO or disk IO. However, if you're using software like SQL Server which performs tasks that do benefit from multiple concurrent threads, it does use multiple cores out of the box. (Yes, it's actually just using multiple threads out of the box, but Windows tosses those to multiple cores... trying not to be too pedantic here) Also if you're manually setting the affinity of processes, you're probably inadvertently decreasing your performance. Windows will spread processing across multiple cores by default (not only using 1 core like you say). When you specifically set the affinity, you're not really moving the process to a different core so much as saying "don't use this core even if it's not being used by anything else." Multi-threading with IO intensive applications should make use of IO completion ports in Windows. That will give you much better perf than trying to manually control which core you explicitly want a thread running on. Keep in mind that IO is orders of magnitude slower than processing, and more often than not that's now the bottleneck in systems. Check out http://www.microsoft.com/technet/sysinternals/info rmation/IoCompletionPorts.mspx/ for more info. Unfortunately, there are a lot of applications out there (both from MS and other vendors) that do multi-threading poorly. Hopefully if MS re-writes some of the Windows infrastructure to make multi-threading easier for applications we'll see better apps that more properly take advantage of the hardware that's out there.
Does this mean my dual core 200 mHz Pentium 1 system won't run their latest and greatest?
it sounds like in 1998. I mean I hate Windows as much as the next guy, but it has evolved a bit since then.
As the island of our knowledge grows, so does the shore of our ignorance.
But this reminds me of the database file system, not mention the 11th hour reduction in the virtual server specs.
"She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
A question for someone who understands this stuff - what's the difference between the way Vista and OSX handle multicore processors? Would Apples OSX need to be redesigned to use multicore processors more effectively? Apple already sell 8 core machines - are these not using the multicore as effectively as they could?
I mean come on...what good are multiple cores if you are still thunking the video display.
End process does not do the same thing as kill -9. If you want something like kill under a Win* environment get pskill.
-illumina+us "I put on my robe and wizard hat..."
I notice that windows always seems to hang (with very little response) just after I log in whilst all the startup programs start up (SeaMonkey quick launch, Miranda IM, AVG Anti-virus etc). Once the apps load, it becomes responsive again pretty quickly. Oh and I have a nice beefy machine so I don't think its my specs (unless its a case of too many programs all trying to access the hard drive at once :)
I didn't think the house band in Hell would play this badly.
...or should Microsoft stick to its knitting while applications take advantage of (possibly) more resources?"
Microsoft wishes to inform the writer that there are NO applications of any importance that are NOT from Microsoft. Anything worth wearing is already knitted by MSFT or will be in the future when they decide you are ready for it.
Ive seen a fair number of processes getting stuck in state 'E' on OS X, which is very annoying.
An OS should make resources available, not use them up!
But modern OSs are really bundles of a lot of software, some of which could really use some parallelizing. I don't think this requires a fundamental redesign, but what do I know?
Yesterday was the time to do it right. Are we having a REVOLUTION yet?
Affordable processing power, for home users, isn't going to come from faster mhz as much as from multiple cores, so naturally new software will need to take advantage of this new hardware to be competitive.
Any OS that doesn't provide support may find itself outdistanced from an OS that does. Of course, if an OS doesn't have a very large game base to begin with, then they won't have much to lose either.
Two cores both hitting the same HD for a ton of data is going to be slower than doing the two processes sequentially. The HD speed vs CPU speed chasm is just getting wider. RAID helps, but with additional cost, complexity and its own unique drive replacement hassle.
What about a massive RAM drive? This would go flash one better in the speed department (my 8GB Ritek USB key is several times slower than a _HD_ based on my informal timings.) Battery back it up if need be.
I'm hoping Windows 201x will address this.
I come here for the love
Would have been a much better piece of news!
What a pity!
Maybe Computers will never be as intelligent as Humans.
For sure they won't ever become so stupid. [VR-1988]
that's because nt and 2000 and all later NT based windows OS' were designed properly. win95/98/me was a continuation of windows 3.1 which did not separate application memory space. in other words, when you ran an application and it attempted to write to memory other than what it allocated, it was a crap shoot if the system would hang or if the program would GPF.
linux was not much better compared to nt and 2000, however it has made major strides since then and (15 years after its initial release) i am finally comfortable with using linux for non-critical enterprise applications.
Microsoft Windows already supports multiple cores in the same sense that OSX does on the Macbook Pro.
Next announcement will come about 6 months before the release date:
This feature will not be included in the upcoming release of Windows.
Five years from now Windows will support multiple cores. Which is what OS X is doing on my MacBook Pro RIGHT NOW.
I believe the largest SMP system that OSX has ever been run on is 8 cores. Windows has run on a 64 CPU system and Linux on a 1024 CPU system.
So I'm kind of struggling to understand how OSX is superior in this regard. I know there must be a technical explanation, because it's not like Mac owners to post single lines of obvious bullshit in an attempt to advocate their systems while actually just annoying the fuck out of everyone.
Because an OS is software that runs on top of hardware. People that use computers want the most powerful computer they can afford. If an OS manufacturer wants to be chosen by consumers, then it will have to support new hardware technology. If you don't want to be on the bleeding edge of technology then don't be, life is possible without the latest-greatest-fastest.
You put $4k down for a pc to run Microsoft desktop software. You should change your nick to GullableTwat23
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
the next windows to be codenamed "Linux"
Power to the Penguin!
Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
What truth?
There is no dupe
but when a program crashes in windows it takes the whole system down.
Not true, unless you're still using Windows '9x. Rogue drivers are another matter altogether, but that's the same issue in Linux.
Having said that, I have seen userland code cause BSODs in Windows. But not in a very long time.
Global warming is a cube.
The first iteration of the "multi-core" OS will be barely functionable.
The second iteration will be usable, but bug ridden.
By the third or forth iteration, it will be an O/S worth running.
Dual core alone makes a difference for the average user .... yes web browsing is single threaded but you aren't. If they are doing anything CPU intensive (media encoding/ITunes ... what have you :) it can render a single core system unresponsive where with a dual core system you don't even really notice.
Personally I have a quad core setup (2 opteron 265's) and it's routinely up over 50% (not doing media encoding).
There was a simular question a while back weither DOS/Windows 3.1 should only run within 640k of RAM and have the applications Take advantage of the extended RAM. Well we know the answer now as time progresses the more advanced the OS Gets the more resources it needs. (Linux, Mac, or Windows) The interaction between the OS and the Application is becomming more and more intertwineded. Then back in the old days. Where in old OS's the program in general (very general terms) says Hay Can I use this device and the OS says Yes or No, and telling when the App can run or not. Now it is much more advanced The application now goes to the OS. Hey OS I need a Window 800x900 pixels With a Command Button in it about 10 Pixels down by 100 Pixels left about 50 pixels wide with the caption OK, Oh also tell Applicaiton B that it needs to print out this Document.
Sticking to one core will ultimatly slow down the OS ability to function. The Speed/Core is approaching a linear trend while the number of cores are growing exponentionally. (2005)2, (2007)4, (2009)8, (2011)16, (2013)32, (2015)64, (2017)128, (2019)256. With the next version of windows probably being between 2011-2013 and will have an EOF around 2021 (est 512 cores) where we have 16 - 32 core systems commonly available. The Demmand on one core for the OS will be so high that the effecenty of apps on the other cores will be so much lower because it will need to be waiting for the OS Core to catch up. Having the OS Multi-Core will assure that Application will not bog down the OS with Requrests.
If something is so important that you feel the need to post it on the internet... It probably isn't that important.
I don't know which version of Windows you're running (3.1 perhaps), but Vista (and previous versions of the NT kernel) have been truly preemptive from day one and you can kill user level processes from task manager and stop and restart services without bringing the system down. I literally can't remember an application making any of my Windows systems come down.
I think the interesting thing here is the "design center" for OS is changing dramatically, in the past 99% of Windows desktops were uniprocessor and I dare say that they made design choice around that. Now we are moving to a world where 2- and 4-way desktops are common and the number of cores is only going to increase over time. That means you may well start to look at some fundamentally different ways of doing things, perhaps dedicating cores to specific tasks within the OS, for example a core might be dedicated to handling the IP stack while another might handle GDI requests. I'm not saying that this is what will happen, just that widespread use of multi-CPU systems may change the tradeoffs in OS design.
Perhaps I'm missing something obvious , but wasn't the much vaunted NT Hardware Abstraction Layer designed precisely so that the OS could be more easily ported to various architectures with only the very thin low level layer HAL changed? Isn't this all they'll be doing with multicore architectures? Just have install a different HAL for each one?
What the exec meant to say, "Future versions of Windows to be fundamentally stolen." It only begs the question, which o/s will MS be ripping off for this 'new' design.
Sorry, but Solaris is open-source under the GPL. And in legal terms, that means that they have to release any source they modify. It's hard for any legal department to defend themselves when they're clearly in the wrong.
BSD, on the other hand...
"I think an etch-a-sketch with an ethernet port would beat IE7 in web standards compliance."
>> just using MS software only uses 1 core by default
Depends on the SW - the SW can specify what processor it wishes to run on, although it is rare for applications to do so.
>> i have to specificly go into the task manager and move processes to another core.
That statement is suspect. Generally speaking, applications don't specify the processor on which they run but instead leave it up to Windows to decide.
>> also new threads are only started on the processor that the original executable was started on from what i can tell.
Not correct. The thread will be created on whatever processor is available, and if a processor is not available, the application will be blocked until one is available. This is assuming that the application has not specified a particular processor on which to run.
>> looking at the win32 documentation i cant even tell it to create the thread on another processor if 1 exists.
You can specify what processor the thread runs on after creation:
SetThreadAffinityMask
GetThreadAffinityMask
SetThreadIdealProcessor
To specify what processor is used during thread creation (although why anyone would care about what processor a thread is *created* on seems odd to me):
SetProcessAffinityMask
GetProcessAffinityMask
Note that by default threads are not bound to a particular processor and during a thread's lifetime the thread itself will likely be run on different processors. I suspect that this is leading you to some confusion as how this works.
Having an application arrange itself on any given number of cores without necessarily being aware of core load seems, well, inefficient.
tasks(723) drafts(105) languages(484) examples(29106)
..to run Duke Nukem Forever.
Yep, I stumble across those often too on my MacBook Pro. The only way to get rid of them seems to be rebooting.
-- Cheers!
thank you very much i did not know about these functions. i'll have to dig more into them.
In an age when Intel and IBM are making statements about future 80-core processors or massive parallelism, and when multicore processors (or at least dual-CPU systems) are becoming commonplace, how can a statement from Microsoft to the effect that they're going to take advantage of multiple cores be anything other than a "me too!" piece of fluff?
Nothing specific is said, just the vague "we're going to be doing good stuff to make use of the things we have when we're done" sort of message.
What's next? "Memory is important, so we're going to make really good use of it?" or "Hard drives are getting bigger all the time, so we're going to do something with that extra space. Not sure yet, but it'll be really good and probably involve the overuse of the word 'rich' by senior execs."
I'm looking forward to *delivery* and ignoring vague promises.
Just pasting GC-RAMDISK into Google gets an ad for CDW - *WITHOUT* any memory, just the card is only $15x. I have been thinking about one of these for a while, has anyone got experience with it ?
what does this mean for me and my Cyrix 333 Mhz?
2015 at the earliest
wait for it, it's gonna be hot, and work with the zune too.
he hasn't seen jack shit of anything
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
This gives me something to look forward to in 2021.
I might know what I'm talkin' about, but then again, this is Slashdot...
NT uses the Nested Thread register of the 286. They named their product Windows New Technology (wow great name) and now they call it "Windows Vista with New Technology Technology". I'm looking forward to this New New Technology Technology. I'm sure it's going to be as impressive as all that went before it.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
[boot_SMP]
*nomp=0
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
I think they should spend all of their money and devote all their resources in making their OS more complex.
I'm not qualified to talk about the fundamental differences in how the OS's handle killing processes when something goes awry, but from my more userish perspective the biggest advantage I find on my linux boxes is that I have a keyboard shortcut to kill X without restarting the system...that and I can alt-F# to a different terminal and kill a process there. Beyond that, the NT-based windows seem to manage quite nicely. Ending a "task" is unreliable, but if you tell it to kill a process and you have the right permissions, then that process dies reliably. There's also a command line process killer (taskkill) for those who don't want to ctrl-alt-del and deal with the task manager.
If anyone feels like shedding more light on how the underpinnings are different and in what situations I would be observing a major difference, I'm completely ready to learn. My day to day experience with modern OS's, though, is that they've all pretty much got process killing down pat.
Vista has already had serious trouble catching on. First it was terribly delayed, then businesses didn't even bother to upgrade. When it was released in the consumer sector, it faired poorly with most consumer sales being with new computer purchases. And now, dell is even offering an XP option with new computer purchases. Many folks I know personally are planning to stick with XP for a few more years.
But now, I have a feeling Vista is going to be getting outdated really fast. I was under the impression a few years ago, based on what MS was saying, that vista would be able to handle plenty of new cores. Yet, now that it's out, we find that it's hardly any better than XP. I mean, "designed to run on one, two, maybe four processors." come on!
Quad core processors are out already! And, I have no doubt that in 2-3 years we'll be seeing 16 core (or more!) processors. The question is, where does that leave vista? I really believe Vista's terrible support for multi-core processors could strike a final blow, leaving vista as nothing but a huge miserable failure on Microsoft's part.
Err,
No.
Every NT based OS from Microsoft has had IE and Windows explorer as two completely separate processes so killing one won't affect the other.
I can have a 100 IE windows open, kill explorer.exe and my IE windows won't be affected one bit.
Even if I enter a URL in a Windows Explorer window, it launches my default browser to that URL.
Look at the license agreement on NT 4.0 and nearly every version of Windows since (a few before?). "On a maximum of two processors" It has been Microsoft's policies to rape anyone who wanted more than two cores, are they changing their policies now?
The preceding post was not a Slashvertisement.
So now windows will clog ALL of my processors? It's already bad when it clogs just one.
Extreme Programming - Redundant Array of Inexpensive Developers
otherwise, calling a function get into all kinds of resource locking problems.
MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
I am TheRaven on Soylent News
There is nothing wrong with using a proven design from another product in a new product. OpenOffice.org has stolen from MS-Office, Firefox has stolen from Opera, Thunderbird has stolen from Outlook Express, Linux has stolen from UNIX, the GIMP has stolen from Photoshop, Evolution has stolen from Outlook, and so on, and so forth...
Not every single piece of software needs to be 100% unique and original. Taking an old design and improving it is a very valid method of designing something new. <obligatory_car_analogy>Heck, every single car today is a total rippoff of the Ford Model T</obligatory_car_analogy>
After 3 days without programming, life becomes meaningless
- The Tao of Programming
The problem with OSX running on lots of cores is the hardware. Apple does not sell hardware with more than 8 cores as for as i know. Maybe some people have tried with Darwin.
Intel and AMD have been coasting for a decade by making very modest performance improvements based on a technology they've known is reaching its limits. Multicore may turn out to be a short-term transitional approach until new technologies are developed that allow a return to true performance gains. Given how long MS takes to develop a new OS, they may release it just as multicore goes the way of other kludges like extended memory.
Would be efficient distributed locking and messaging at an O/S level that supports clustering too.
;)
Just like the O/Ses of those good old days
Running stuff in parallel is trivial. Just get another core/processer/computer, run the process. The issue is when the processes need to exchange information or they need to be serialized.
Seems a lot of people nowadays delegate that stuff to some DB software (since DB software needs locking, serialization etc too, and provides it), but DB software has typically higher overheads and also a fair number of DBs have problems running across clusters too...
If you design the APIs well programmers will start using multiple cores, and even multiple computers. It's not necessarily an easy problem, but it's been done more than once already, I'm sure with the benefit of hindsight, some hardware support from say Intel, things should be even better nowadays.
When you look at how many services are already running in modern Windows, add in applications and interrupt processing, background screen updates, background printing, and I/O, just spreading those threads across available processors would, one would think, do a great deal of multi-processing already. Intensive applications after that (games, video, etc.) need to multi-thread themselves, and many do now. So what underlying OS functions still remain as long running single threads?
"It's the height of ridiculousness to say for those 9 lines you get hundreds of millions."
What the hell are they parallelizing ? Again they're straying further away from the true definition of an operating system. The OS should be aware of multiple cores and try to balance them efficiently, but if they're talking about optimizing code for multiple execution cores, they're thinking of application software. An operating system is supposed to be a glorified collection of device drivers, low-level APIs and maybe a basic user interface to build upon. Everything else is an application. Windows Explorer is an application. Xorg is an application.
What Microsoft needs to do is learn how to do non-blocking I/O, because that's the slowest part of any computer system these days. Processors are fast and cheap, so is RAM. Hard drives are still slow pieces of crap. It's real cute that the average idiot can go to Best Buy and grab a 750gb drive, but he'd probably be better served with a 75gb drive that's 10 times faster, because Windows will stall while waiting for data to come off those slow noisy platters.
That's one thing I really like about the Mac, it's good at hiding some of its lag by showing at least some interface feedback really quickly while the rest of the stuff loads. Windows will just sit paralyzed while a dozen processes fight for disk attention and total throughput stretches toward zero.
-Billco, Fnarg.com
A lot of applications like Word, Excel, etc don't usually do process-intensive tasks and the act of spreading the work over multiple threads would actually decrease performance (there is overhead for each thread, context switches, etc)
You are right, but not quite accurate: multi core systems share the L1/L2 cache between processors, this primarly means that they are not such a big improvement in performance as they are supposed to be (small cache = low computer); the side effect is that multiple threads can pass messages and data to each other much faster than on "classic" multiprocessor systems, where the data had to be moved through a much slower bus.
this post contain no useful information, no need to mod it down
I think you'd find that there are other areas where Linux is well ahead of Windows, beyond filesystem support and research. The following are just the ones right off the top of my head:
I'm sure there'll be more to add to this list. There are good comparisons around.
Cheers,
Toby Haynes
Anything I post is strictly my own thoughts and doesn't necessarily have anything to do with the opinions of IBM.
Parent post made me laugh. I would rate it "+1, Funny". Thanks for listening.
Vista has a better under-the-hood structure than did XP. But by keeping support of XP applications, Vista was limited in the strides it could make forward, because it needed to keep backwards compatibility.
Now the next OS past Vista is going to need to be backwards compatible to Vista, but not to XP necessarily. The benefit of this is that they can really make some strides on that one, versus what Vista has to offer.
I'm not terribly impressed with Vista, but I know Microsoft has some very bright engineers. I know the Slashdot crowd will always boo and jeer at Microsoft, but in the end, their programmers are just as good if not better (in many cases) than anybody in the Linux, Mac, or Unix worlds. The brilliance of their programmers isn't really the question here, it's a limitation on what they can and cannot do. Apple has had it easy, since they just dumped their prior OS entirely and built one anew. If Microsoft did that, they'd lose billions -- but I'm quite certain that they would have a very nice OS after the fact.
Either way... lessons will be learned as time goes by by all software companies, and that only benefits us in the end. Although with the pricing of Vista, and the number of editions... it worries me about the future and what the "business" thinks how it should be marketed.
The price is always right if someone else is paying.
Microsoft Research has an OS named Singularity, designed to leverage many CPUs. You can bet that some of their research will go into the next Windows... I saw a presentation by the developers, and they firmly believe that none of the current generation operating systems are going to be able to effectively use i.e. thousands of processors.
One of the key improvements is an order of magnitude increase over conventional Windows and Linux in the speed of creating threads.
They also talked about the need for new programming paradigms, and I have a feeling that these are just as important if not more so than the shape of the next-gen OS. It was funny to hear guys from Microsoft --- who brought us Visual Basic --- saying that maybe functional programming was going to be the next wave.
> I literally can't remember an application making any of my Windows systems come down.
Are you serious? Or do you not use windows much. I've had many apps bring down Windows.
Off the top of my head I know that Media Player has done so, and i'm pretty sure an early release of Gran Paradiso did.
If application code were perfectly parallelized, then speedup would be linearly proportional to the number of processors (P). So, 8 processors would be 8X speedup. But, practically, this will never be the case. There will always be some portion of the code that is serial. Amdahl's law tells us that we can only expect a speedup that is related to 1/fs, where fs is the fraction of the code that is serial. So, if the code is 50% serial, you are limited to 2X, no matter how many processors. Even if there is only 10% serial code, the speedup is limited to 10X. So, this talk of 32, 64 processors, while obviously useful for running multiple processes concurrently, will not really be that important unless applications fundamentally change in a big, big way. But you all already knew that, right?
One of the few very nice things in Vista is that Startup programs launch at a lower priority, so that the system is as responsive as you need it to be right away:
The total boot time is divided into two parts
Peter predicted that you would "deliberately forget" creation 2000 years ago...
Wow, Vista has NT technology! Will this new OS system support LCD displays and NIC cards too?
(Excuse me, I need to go put my PIN number in an ATM machine.)
Quidquid latine dictum sit, altum sonatur.
I so cannot wait until 2030 when this comes out. I'm so going to be the first person on line with my pension check in hand to snatch this one up.
I've read about this on another tech news site and there they saied that neither windows, nor OS-X have trouble with multiple CPUs - but both have trouble with multiple Cores within one CPU
The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
I don't the the submitter understands multi-core OS's and how they are designed. Primarily the quote "Do you think it's it a smart move to further complicate an operating system to take advantage of multiple cores, or should Microsoft stick to its knitting while applications take advantage of (possibly) more resources?" gives it away.
:-P.
The reason is because an application cannot really be written to take advantage of more cores unless the OS supports it. The best it can do is use algorithms which utilize more threads of execution which the OS can choose to run on multiple cores. Using more threads isn't always good, since you could be wasting time context switching on the same CPU, so the app would likely want to ask the OS how many CPUs it is working on. A prime example of this would be a multiple threaded decompresser, assuming all the I/O is out of the equation (whole image is in memory), you will likely want a thread per CPU since all threads will max out there time slices decompressing. Any more threads, and they start fighting for time slices to do work in and end up doing it in less time.
Anyway, on an OS level, multiple core support is VERY important. Linux made some huge steps in this direction in 2.6 by making the kernel preempt-able in a lot more spots. This is difficult as race conditions are sometimes hard to see, but done right and you end up with a lot less serialization of thread execution. Also of course the scheduling algorithm has to be smart enough to not bounce a thread back and forth between multiple CPUs to maintain cache consistency, this is where the notion of CPU affinity comes in. Generally the goal of any OS is the keep the CPUs as busy as possible with useful work as it can.
Finally using less coarse locking mechanisms is huge in multiple-core kernels. For a long time, Linux had something (and still does, it's just not supposed to be used anymore) called "the big lock". The idea was if you new some code was not thread safe, you could wrap it in the big lock and you would be good since NO OTHER code runs while this lock is held, it is a global critical section. The problem is, that while this is safe design, it is highly inefficient design. The correct thing to do is to have many different locks for all your different resources so that two unrelated thread sensitive pieces of code can run concurrently. From what I've heard from some MS employees, Win95 had a similar concept, and was transitioned to more fine grained locking techniques in Win98, this explains the big jump in responsiveness in Win98 as well as the jump in instability in Win98 (since these more efficient techniques are simply hard to get right the first time)
All in all, there is no question that if multiple cores are here to stay, the OSes must be written to take advantage of them. At the very least, things like SMP and other multiple processing systems have a efficiency that can be gained from these types of changes.
proxy
But after all the crap MS promised for Vista and fell through on almost completely I'll believe this when I see it. To me this is the same as some moron in WoW making some idiotic claim. "SS or it didn't happen."
I'll meet you at the intersection of "Should be" and "Reality"
Not every single piece of software needs to be 100% unique and original.
Indeed no piece of software can be 100% original. Else we get into silly situations. Imagine if every new software development project couldnt use, say, drop down menus cause they didnt invent them.
In other words, Microsoft is going to add something that is already there. This isn't even Slashdot news worthy.
Yes, I'm serious, and I use Windows every day (Internet, Office, Media apps mostly), the only thing that's probably atypical is that I don't play games, I also don't install the latest driver du-jour if the existing driver is working fine.
the first release of NT (which for marketing reasons was called version 3.1)
Huh?
FX!32 was for running applications, not the operating system. Think of it like rosetta for Mac OS X Intel.
NT was actually built from the ground up to be portable cross-platform (in fact, the dev platform was the Intel i860 an then the MIPS R4000, both RISC chips). Everything runs on top of a Hardware Abstraction Layer (HAL) that takes care of the differences between various platforms.
NT was a very elegant operating system, which isn't surprising seeing as it was the brain-child of Dave Cutler famous for VMS.
I am NaN
While it has not crashed (i.e., blue screened) the system that I have seen, Adobe Acrobat reader has on multiple occasions for me (Windows Server 2003) brought the system to a crawl, and forced a reboot.
That being said, I do agree that 2003 / XP are much much nicer than previous versions. Of course, I run OS X / Linux at home, as I personally like them better for what I mostly use there. I only run 2003 at work since I have to support it...
Cheers
If memory server me right couple of years ago OSX was using a single kernel lock. Which means that no more than 1 thread running in kernel. See: http://arstechnica.com/reviews/os/macosx-10-4.ars/ 4
I read a long article describing why OSX was much worse processing Ethernet traffic than windows.
I don't know how it has changed since that time.
Congratulations on your genius for building out a bleeding-edge obscure OS for your parents whom I doubt are bleeding edge users, and then coming here to bitch to the choir.
Nothing wrong getting the 64bit hardware, but everything wrong with the blind, myopic optimism with the OS selection.
If you wanted all the fancy graphics and looks, then you well know it's either the solid MacOS, or XP with some nice skinning.
It's called shooting yourself in your foot.
64-bit, like SSE*, SSSE, etc will come in its own time and place driven usually by only the hard-core.
Besides, you're asking Microsoft, the people whom built Vista, the mediocre Visual C/C++ (vs Intel C++ Compiler), and took 20 years to catch up with some modern OS tech to be a cutting edge leader?
I gave a try to erlang and it is indeed an ingenuous (but didn't Ada do the same things 20 years ago) and simple (too simple, there's no useful library) language. Until the OS and the compiler itself can be written with the language, is there any point in trying to use it ? (except for playing around that is).
Non-Linux Penguins ?
I don't get it. How much benefit would your parents get from a 64 bit OS? Are they doing enough media work to tax the CPU in 32 bit mode such that encoding would be faster if they had software that used 64 bit ints? Are they doing hard core encryption? Judging from the RAM quantity, you aren't using enough memory to make 64 bit addressing desirable.
If all the layers know about it, the extra registers in the 64-bit chips can be put to good use. This is unique to the IA32/64 architectures - most others didn't just recently gain a reasonable number of registers. But Intel chips have had to go out to memory (L1 cache, if you're lucky) and back for lots of common operations that you don't see on other CPU's.
Intel finally has a decent chip on their hands in the Core2 line. I even had to buy myself one (and might get another!)
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
The big issue with pushing out 64-bit only with Vista is Intel not releasing 64-bit processors until more recently.
By time the next version of Windows ships (since it seems this week they're back on the Rewrite Bus), anything older than today will be clunky and obsolete.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
in the meantime can XP get a switch so I can specify which core will handle my app when i first start it?
OSX runs on eight pastel cores. And it looks fabulous doing it...
Have you read my blog lately?
I'm not qualified to talk about the fundamental differences in how the OS's handle killing processes when something goes awry,....
What? This is slashdot you are not supposed to admit this. You are supposed to blindly swear that chalk is cheese and declare yourself to be professional cheesemaker who uses chalk everyday.
I dont read
As long as Microsoft as the OS and tools developer can understand and manage the complexities and I as the end user or programmer can take advantage of it then why the hell not!
Ceci n'est pas une sig.
But only after having left plenty of time to INTEL to use this as an argument in their new
s/number of Ghz/numer of core/
marketing propaganda.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
Running one at a time will give you a different experience to looking after a few dozen - things still crash for a variety of reasons and there is still braindead behavior like having to reboot to get networking to realise that a cable is now plugged in. XP really still is a hobby system you have to pay for. Some lucky users never appear to have problems - others with a flaky driver for a network card may spend a large portion of their day waiting for things to happen and think that is the way MS Windows runs by default. It's not unusual to find people that have to reboot four or more times a day before work is done on their system to fix it.
As for multiple CPUs - there's usually enough stuff running somewhere that you can take advantage of it even if your applications are single threaded.
Well, when we talk of new features, what do we really mean. To be frank, all that microsoft puts are small bits and pieces of code into their codebase and they call them features. On the other hand, standard UNIX releases, and linux have constantly been coming out with new major features. As far as Vista is concerned, my friends inside microsoft tell me that it REALLY isn't a rewrite. Take AIX for instance. AIX 6.1 comes with security features like Role Base Access Control, MUlti Level Security, Trusted Security Stack. In RAS they have features like probevue. They are planning to come out with kernel hot-patch, in which you won't have to reboot the machine after putting a kernel fix in. It comes up with partitions, and partition mobility between machines on the fly without downtime. It comes with application check-point stop and restart. Sun also has come out with features like this. all major unixes have been able to handle multicore upto 100s of processors since 1990s. Windows is 17 years late. and still behind.
If WPF, the GDI+ rewrite, were multithreaded, why do I have a bazillion calls to Dispatcher.Invoke in my code?
I just invested in the future by obtaining an 8-core Mac Pro w/16GB of ram. As far as I could tell, it is the most highly engineered multicore development platform on the market today. I think parallel processing is a topic whose time has come. I don't mind putting that kind of hardware behind Mac OS X, but IMHO it would be nutty to invest in that level of hardware to run a Microsoft OS. Over the last few decades, I have been constantly impressed at Microsoft's ability to use up any additional computing power provided by the processor manufacturers. IMHO Intel provided hardware support starting in 80286 to write advanced protected operating systems, and Microsoft ignored Intel's efforts for many years by utilizing only a fraction of the capability for advanced operating systems that would have been possible if Microsoft had read the system writer's guide and used some imagination.
huh ? after a vista that sooo "not was" ?
Read radical news here
There are many misunderstandings about parallelism, as it is evident from this discussion. Some posters said that "my O/S already runs in multicore/multicpu systems, thank you very much"...some others said that some tasks are like word processing is non-parallelizable etc.
The misunderstandings lie not in what parallelism is, but what Intel and other companies are trying to achieve. The quest for parallelism is not about running lots of programs in parallel, but extracting the parallelism out of sequentially written programs, including kernels. In order to improve performance, any parallelism that lies in our applications but is not exploited right now must be utilized, if we want to see real improvements in the future.
Modern CPUs do many tricks in order to increase parallelism, like pipelining and out-of-order execution. Current research at Intel has produced an 80-core CPU. It is highly unlikely that any of us will run 80 programs simultaneously tomorrow, so either this research is for servers only (highly unlikely because Intel will need to sell a lot of these chips to cover research expenses), or Intel knows that programs can be parallelized even more.
Compilers can not identify all possible parallel paths of execution, because it is an intractable problem. Writing complicated multithreaded programs using threads, semaphores and mutexes is quite difficult. So what is needed is another software architecture that allows programs to be easily parallelized.
Ericsson has dealt with these problems a lot time ago, and the result was Erlang. Based on the Actor model, Erlang programs can contain thousands of objects working in parallel, and the programmer need not worry about how to lock/unlock resources.
Microsoft's only option is to ditch C and use another language for their O/S. C can not work with the Actor model, unless modified. The best option for them is to make a C-like low-level language that includes the Actor model as part of the language specification. They can combine Cyclone, a version of C which is safe, with the best parts of ADA and Erlang, and come up with a language which allows the easiest possible path to writing parallelizable programs. And there is a big opportunity for them to put bounds checking and garbage collection to all their code, so as that two basic problems (buffer overflows and wild pointers) are solved at last.
How do you know that's exactly what's happening?
Patrick Doyle
I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
You are right, but not quite accurate: multi core systems share the L1/L2 cache between processors, this primarly means that they are not such a big improvement in performance as they are supposed to be (small cache = low computer); the side effect is that multiple threads can pass messages and data to each other much faster than on "classic" multiprocessor systems, where the data had to be moved through a much slower bus. L1 caches are tied to a single core. L2 caches on Core 2 Duo chips are shared between 2 cores. The current Intel quad core CPUs have 2 L2 caches. On AMD Opteron dual core chips, L2 caches are single core. On AMD's Barcelona quad core CPUs, L2 caches are still 1:1, but the L3 cache is shared among all 4 CPUs.
There is still context switching overhead between threads on different cores accessing the same data, but the latency involved drops if L2 or L3 caches are shared and the data resides in one of those. This still doesn't address multiple CPU systems though which do not benefit from shared caches.
Back to the topic of Excel/Word. Both of these most certainly would benefit from multi-threaded design. Imagine being able to continue working on a spreadsheet while another spreadsheet renders/saves/recalcs/draws/loads/prints/is emailed. Is there any reason I can't work on a word document while images are loaded asynchronously in the background? Just a couple of the single-threaded bottlenecks I personally experience with Word/Excel.
The cesspool just got a check and balance.
Support for memory protection was gradually added to Windows 2.x, 3.x and 9x, as the '386 (and earlier the '286) gained market acceptance, so that Windows 9x was not quite like you're suggesting. At the end of the day, however, the lack of memory protection on the original hardware made it difficult to add it without breaking compatibility, and the architects of Windows 3.x/9x put compatibility and performance ahead of taking advantage of hardware improvements. This was arguably what the market wanted, so the right choice.
Windows NT solved the legacy problem to some extent by using a virtual machine, but this led to 16-bit software running much more slowly under NT than under Windows 3.x/9x, and also dramatically reduced NT's compatibility with it. NT only really caught on, in the form of XP, after 16-bit software had ceased to be important.
The 'NT' name supposedly comes from the fact that the original target CPU was the Intel i860, although this was later changed to MIPS. The i860 simulator used by Microsoft for early testing was code-named the 'N-Ten' (probably because 860 is 86 times 10), and that's where 'NT' came from. The 'New Technology' name was a backronym, but not for anything related to the '286.
It's interesting to note, however, that some of the examples you list as well as most of what Microsoft has made, are not really technically better than their predecessors. The main difference has to do with licensing terms. Microsoft bundles and sells knock offs of other people's software under their license. Various Open Source projects copy commercial software and offer them under free licenses. In many cases, the choice of one piece of software over another has more to do with issues of licensing terms, commercial support and money rather than technical features.
BeOS was pervasively multithreaded, throughout, and anticipated massively parallel machines at a time when everyone else thought that the Ghz race would continue indefinitely. BeOS was so multithreaded that even conventional window classes could be re-entrant. Whereas in Windows or any other desktop API that I know of, all of your messages come into your window in serial fashion, in BeOS, you could theoretically get a resize, mouse move, and keyboard event genuinely concurrently, each coming in an on another thread. As such, you couldn't just say the BeOS equivalent of SendMessage was a function call of sorts, as is the case of Windows. It required a lot of mental unwinding to get into it, but, in the end, the model was very, very cool and very very powerful.
.NET, COM, SDK, and every other application to this new Windows would be an enormously massive undertaking.
Now, for Microsoft to go and say that they are going to reengineer Windows to be a pervasively multithreaded environment, implying something like BeOS, is almost as silly as Gil Amelio's once famous prediction, that, "Apple would just add true virtual memory into Copland", after the OS has been developed for quite some time. Making Windows genuinely and pervasively multithreaded would -break- everything, as all Windows applications assume that Windows messages come in on multiple threads. If they would do it, cool, but it would mean that porting
Or, Microsoft would just shit something together, and it wouldn't really be pervasively multithreaded....
This is my sig.