Post a Comment
Indeed. Presumably this makes the system more stable. A faulty sound device/driver cannot crash the system?
However, does it mean you have to run seperate versions of the sound system for each user? More resource bloat?
Interesting that they say the old system is not good enough for Pro users. Sounds like they want a slice of this pie from Apple.
Kinda reminds me of a recent Microsoft advert where some girl breaks up with her boyfriend and decides to use the "world of possibilities with Microsoft Windows" to record a song about. Shame the advert doesn't explain any further; I'm yet to find a Windows machine that ships with a decent Audio app. Indeed, I've tried lots of different apps on both platforms, and am yet to find, other than Garageband, a cheap application that users can pick up and learn easily to record music.
a cheap application that users can pick up and learn easily to record music.
then you havent tried this one
http://mackie.com/products/tracktion2/index.html
I've tried lots of different apps on both platforms, and am yet to find, other than Garageband, a cheap application that users can pick up and learn easily to record music.
Obviously you must not have tried ACID from which Garageband takes great license. It's been around since the last Millenium. The Pro version is expensive, but they have some stripped down versions that cost a mere $50 and do just as well for the amatuer. There is also, for the more adventurous, Computer Music's CM Studio which is free and can be found on any CD that ships with the magazine (well, it then costs $15). You get a lot of quality sound making tools as well as royalty free loops.
Audacity was also mentioned and is quite good.
What are all of you people blathering on about?! All you need is sndrec32.exe:
http://www.albinoblacksheep.com/flash/noises.php
"Indeed. Presumably this makes the system more stable. A faulty sound device/driver cannot crash the system?"
Correction. A faulty sound/device driver cannot crash the system in as many ways. I.E., much of what it does will be out of kernel space, but some of what it does still lies there: I think those sort of bugs should be more obvious to flesh out.
> Hrmm... I Gno someone had to have this idea before, right?
In fact, this is not even an old idea : everybody wants to bring the whole audio stuff out of the kernel, since the beginning. The problem is that it brings a lot of latency issues.
Audio in the kernel is not a problem, as long as the drivers do not contain run-time errors.
"Just because they're moving some functions out of the kernel into userspace, doesn't mean they're ripping off ideas from various microkernel systems. Some stuff just didn't belong there in the first place, even in the most monolithic of designs."
The NT kernel was at first a microkernel. It became sort of an hybrid when they started movind stuff to kernel space. And that kernel space not the kernel itself. The architecture is actually quite brilliant, Dave Cutler did a great job. It's not just a gigantic image blob loaded on boot, and it's more expandable than just dynamically linking more code (modules) to the blob.
Hugo, not all of us are as dense as GWB; we know there is a difference between kernel space/ring0 and the kernel itself - we also know the reasons WHY they were loaded into kernel space.
However, computers have now come to the point that the penalty of contextual switching should be so small, so meaningless, that there should be no need to load everything but the kitchen sink in kernel space, simply for the gain of a few seconds and slightly, unnoticable snappiness improvements.
I really don't think Vista developers code any worse or any better then OSS developers do. They code the way they are told to code. In fact I would venture to say that most of the problems that MS has are not because of poor coders, it is because of poor design concept and a poor policy on security. (although I believe the latter is slowly changing)
remember...... proprietary software developers tend to be the (at least in part) the people that also do development for the OSS world.
I think the problem Microsoft has with regards to code quality is that they use the "thousands of mediocre coders" model, instead of the "handful of excellent coders" model. DirectX has over a thousand people hacking on it. It's track-record has been, well, mediocre. Windows NT was designed by a core team of a couple of dozen people. To this day, the NT core is the most technically sound product Microsoft has ever released.
The worst part is, I had dmix set up, and then... it broke, or something. Stopped working, even though the files were in the right place.
At least Ubuntu comes with ESD by default; if only Kubuntu could use ESD so you didn't have to switch all apps to ALSA to get them to have sound at all...
(or maybe just start ESD while in Kubuntu? I'm not sure)
Windows has never been known for good audio quality. By moving much of the audio drivers out of the kernel, they are going to add unpredictable (and large) latencies to the audio stack, which will only make audio performance worse. I suppose it won't matter much if you are running Vista on a 2% utilized quad-core 4GHz P5, but as soon as your CPU utilization hits 100%, your audio quality will go completely down the drain.
BAD idea for Microsoft, but a very good outcome for Linux (which uses a beefy kernel-level Alsa system and a lightweight dmix or jack layer on top).
No, it doesn't looks that to me.
Read again: "re-Vista, the audio stack lived in a bunch of different kernel mode device drivers, including sysaudio.sys, kmixer.sys, wdmaud.sys, redbook.sys, etc. In Vista and beyond, the only kernel mode drivers for audio are the actual audio drivers (and portcls.sys, the high level audio port driver)."
It looks to me that they had too many stuff in the kernel. In linux, alsa has pretty much just the audio drivers - just like vista. It looks like in previous releases, many of the stuff that linux has on userspace (their dmix equivalent, etc) was on kernelspace which makes it ugly
IOW: Windows people seems to be cleaning up the windows kernel, which is a Good Thing (TM)
It's funny, but what Microsoft is doing with Vista is what BeOS has been doing for a long time. In BeOS, the typical way to do things is to have a very low-level driver, and then use accelerants in userspace to do all the higher level processing. This is done for sound drivers, network drivers, video drivers, and most other types of drivers, too, in BeOS. While the old NetServer being all in userspace except for the lowest level driver blowing chunks for throughput, it seems this model of operation has worked quite well for BeOS, so it isn't beyond possibility that Microsoft may be able to make this worthwhile.
"In BeOS, the typical way to do things is to have a very low-level driver, and then use accelerants in userspace to do all the higher level processing"
This is done for pretty much every OS out there - linux certainly does it except in some places like the tcp/ip stack. Look at libusb for example: USB drivers in userspace. X.org's DRI....this is a "put policy in userspace" kind of design, it's not beos or microsoft who invented it.
Never once did I reference anything that stated BeOS (or any other OS, for that matter) was the first to do it: I used BeOS as a great example of a system that not only has done what Vista is supposed to do, but blows other platforms (including Linux) out of the water with low latencies for sound.
That being said, it'll be interesting to see if Microsoft has changed things enough to make interrupt handling have less overhead than the last time I looked at writing device drivers, where the driver model included a lot of deferred procedure calls at different interrupt levels. In comparison, BeOS has a much simpler driver model, much closer to the typical Unix-ish driver model. Which model is better, and in which circumstances? Well... let's let reality make itself evident there 
For those of you who watched the video, I invite you to check out http://www.opensound.com/virtmix.html - OSS does per-application volume control, per-application vu-metering and ossxmix and /dev/sndstat shows what app is running on which channel. We did this back in 2001
On top of it we have an RIAA-curve equalizer (yes the very same evil RIAA did some interesting research back in the 60s and 70s), fidelity enhance and stereo image enhance. Vista doesn't give you a system wide equalizer.
However I do not think that removing mixing from the kernel to user space necessarily works better. All it does is prevent a bug in the mixer from crashing the kernel. They talk about glitch-free audio and low latency audio but that really depends on
The NT kernel was at first a microkernel. It became sort of an hybrid when they started movind stuff to kernel space. And that kernel space not the kernel itself. The architecture is actually quite brilliant, Dave Cutler did a great job. It's not just a gigantic image blob loaded on boot, and it's more expandable than just dynamically linking more code (modules) to the blob.
THANK YOU! I think what these Be zealots are forgetting is the reason Microsoft moved away from a microkernel in the first place: performance.
I mean seriously, start up an FTP server on BeOS and try to grab a file. The entire OS chokes! Yes, pervasive multithreading and a microkernel make for a snappy GUI experience, until the system needs to do something I/O intensive. Then the whole thing just chokes. Microkernels are bad for I/O, and ultimately you end up taking something that can run 100% in kernel context, like, say, a sendfile() accelerated file transfer, and throw in a ton of context switches. Think what's happening with FTP. Your data goes:
Disk (Kernel) -> VFS (Userspace) -> Message Queue (Kernel) -> FTP Server (Userspace) -> Message Queue (Kernel) -> Network Stack (Userspace) -> Ethernet Driver (Kernel)
All those context switches are downright unnecessary, as has been proven by all the operating systems which have garnered mainstream support, like Windows, Linux, *BSD, Solaris, etc. who can accomplish this completely in kernel mode.
Yes, I sure do enjoy an operating system where I can share files at the same time I'm doing something else. That's really awesome.
Microkernels are bad for I/O, and ultimately you end up taking something that can run 100% in kernel context, like, say, a sendfile() accelerated file transfer, and throw in a ton of context switches.
To be fair, it's more appropriate to say that G1 microkernels are slow for I/O. G2 microkernels (like L4) have put up some very impressive numbers in I/O performance, largely because of massive reductions in context-switch latency, along with extensive use of page-mapping to pass data around.
I mean seriously, start up an FTP server on BeOS and try to grab a file. The entire OS chokes! Yes, pervasive multithreading and a microkernel make for a snappy GUI experience, until the system needs to do something I/O intensive. Then the whole thing just chokes. Microkernels are bad for I/O, [...]
I haven't (succesfully) booted into BeOS in two years, but I'm not sure that it chokes for the reason you describe. Net_server is very bad at handling its memory while transfering files. Perhaps even leaking it; your memory would fill up in no time.
_V_
It seems a lot of people here forget some very basic stuff.
Some things that were done "back then" were done for performance reasons. What worked "best" back then is not the same as what works best today.
Algorithm A for doing one thing may be O(n) and algorithm B may be O(n^2). Depending on how hard they are to implement on the system you currently have available, the best choice might actually be to use B for it. And that's not even considering the constants. A may be better for 1% of the cases that users will ever encounter, while B is better for the rest. Does that mean you should use A just because it is better in theory?
Of course not.
The same principles apply here really. What worked back then maybe wasn't the best design they could muster up, but a design that was easy to get fast enough.
Oh, hell!
The guys at Microsoft are implementing a more prowerful consolle; they are saying that a more modular system with less critical points, depending to what is installed due to the destination use, is better than a big integrated system; they are saying that a more *x-like object right and access management will be more secure...
finally they are understanding the word "micro" in MICROkernel, since they use one...
Are they trying to mimic *x or what else???
This is a very good move from MS, but so late; combined with task scheduling we will not notice any problems from sound subsystem; if CPU utilization reaches 100% and you want to use audio it would stop you from executing the application that requested it. The same would be to HDD access. "This is like if you don't have coins then you cannot play the game". Anyway Vista looks promising but Security and GUI mess are down-grading it. We will see what the future will bring!
I seem to remember that a lot of stuff was moved into kernel space during the switch from 4.0 to 2000. Coincidentally, after 4.0, I always felt audio to be flaky: in 4.0, WinAmp would continue playing in every situation. Even if the GUI had completely frozen, Winamp would play on. In 2000, it seems possible to get every audio app to skip by just maxing out the CPU. And the CPU is way better than the K6 I had for NT...




