Realtime OS Jaluna
rkgmd writes "Jaluna-1, a software component suite based on the
respected chorus realtime os is now available in opensource (MPL-derived license) form. Jaluna, the company behind this, is a spin-off from sun to promote and develop chorus, and consists of many developers from the original chorus team before it was acquired by Sun. Chorus developed one of the earliest successful microkernel-based rtos's (could even run parallel, distributed unix in realtime on inkos transputers in 1992). Lots of good research papers here, and a link to the original newsgroup announcement."
How does this compare with QNX?
But it's really too bad that my university doesn't teach this stuff.
It's something I realized the other day; we have so many advances in the field of computer science, such as Jaluna, and yet our centers of learning don't touch it. In fact, Java isn't even a core requirement in my plan of work!
When is it that we'll finally be able to have a good environment for learning all of these spectacular technologies?
Another notch for opensource, sounds like a useful thing to have lying around for all your real-time os needs. "Jaluna-1 supports POSIX Real-Time standard applications, and includes state of the art tools for developing, deploying, configuring, and managing embedded systems. Jaluna-1 is being offered as open source, royalty-free software. Jaluna complements its open source software offering with technology and services enabling customers to easily migrate from proprietary Real-Time Operating System (RTOS) based projects to royalty-free Jaluna-1"
Last.fm - join the social music revolution
Who are they?
Don't you mean Inmos?
It should probably be mentioned that LOT's of commercial RTOS's provide source. For a lot of applications this is pretty much a requirement. The real distinction here is the royalty-free license, although RT-Linux (which I know almost nothing about) obviously doesn't require royalties.
Roving Web-Teleoperated Robot
I know it sounds harsh but the reality is that most courses worry about Java, C++, Jaluna and people become concerned about the technologies rather than the theories.
The person who knows Knuth will be able to code in any language, the person who doesn't is limited in what they can do. Did your course teach you how to dope a transistor, build an Op-Amp ? An AND Gate ? A Compiler for a processor you design ? An OS for that Processor ?
And did it do all of these by starting with theory or was the first lesson "Print hello world" ?
The problem with practical courses is that they teach people to be the bricklayers of the Software Engineering world. The theory course teach you to be the engineer and how to apply theory to practicality.
It isn't about being taught "cool" technologies, its about being taught the theory behind them. RTOS is great in that it teaches you about Thread-death, dead-lock, live-lock, IO blocking, race conditions in a very immediate environment, so when you build a bigger system you automatically avoid those issues because you understand what is the right way to work.
Some Universities do teach the cool theory stuff, but most people don't choose to do that as its harder. It also makes you less marketable in the first year after graduation as you don't have the buzzwords... 12 months on however you'll be roasting everyone.
An Eye for an Eye will make the whole world blind - Gandhi
College is to give you a foundation of understanding so no matter where the technology goes you will have the ability to learn it due to your broad base.
If you want tech training go to DeVry/University of Phoenix (what a crock name). This is why a degree is worth more than certifications.
Plus, no one is stopping you from learning about RTOSes. I'm going through the Minix Computer OS Design book by Tanenbaum right now. You can either be spoon fed like most university students, or you can get up off your ass, show some motivation and learn it on your own. This is why I never have a problem finding a job and others cant get an interview. People want to hire motivated workers not someone who'll just tow the line.
...as opposed to TimeDelay OS?
There's a Mercedes gap too. I want one and can't afford one, but it's not government's job to do anything about it.
I left Uni with one programming language (Ada) (Okay and LISP, M68k, Prolog and other really useful languages!) one OS (AIX) but I understood however thing worked.
However the answer to the question "do you know X" is always "yes" the advantage to theory is that it makes the lie true. How long to learn a new language ? If you understand the theory then the only thing that matters is syntax, 2 days ? 3 more days to learn the libraries ?
You resume should say that at University you learnt the following, not "I taught myself" because employers will look for the former wording not the later.
Jesus though "Advanced web design" where you do Perl. What has the planet come to ? Sorry to sound like an old fart but "Advanced Web Design" doesn't sound like something in a degree, it sounds like a Dummies book. XML as a course ? Its a bloody markup language, what is there to learn ? XSLT ?!
Learning extra languages or technologies is simple if you just understand the principles. Then you can claim to have known them for years, even though it was only last week when you found out this interview required it. As long as you can understand the theory then everything else makes sense.... except VB.
An Eye for an Eye will make the whole world blind - Gandhi
What is this, the name of a new Gundam?
Comment removed based on user account deletion
Over at the U of S computer science department, you learn (if you don't already know them) Java, Eiffel, C, C++, Prolog, MIPS Assembler, OS design, UNIX systems programming, etc. Take a skim through the class descriptions.
Considering we're such a podunk town, I find it hard to believe you can't find something as good or better than it.
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
Atari also had one that was based on the Transuputer from Inmos ( 4 cpu ), that i dont think was merely a 'add-in', but designed from the gronud up using it as the main cpu.
But since i never saw one in the flesh i could be wrong.
---- Booth was a patriot ----
You can learn C++ for years and then open a good book about it and understand that you still don't know SHIT. Don't agree? Buy yourself the following books:
Effective C++
More Effective C++
Exceptional C++
I read these books to humiliate myself, and other people when I pull something that I read in them from my head and even the "experts" start talking crap.
The more you know, the better you understand how much more you don't know.
*
The basic difference is that the kernel in a microkernel system is just that, micro. It includes functionality only for the concepts of tasks, the memory they use, the CPU time they get, and the messages they pass to each other.
This is rather different than, say, Linux. Here the kernel includes all sorts of things, like networking stacks, device drivers, file systems, etc. These are basic parts of the kernel itself, along with everything in the microkernel too.
So how does one use a microkernel if it doesn't have all this (required) stuff? Basically all of these things are compiled into modules known as "servers", and run as separate tasks -- just like any other program. So if your web browser needs to send a request to a web server, it does so by (essentially) saying "hey microkernel, could you tell the networking program to send this to this address? Thanks!". In a traditional kernel your web browser would do a local "method call".
This might sound piquane, and for the end user it often is. However, in theory at least, microkernels offer the ability to help development. That's because you can load up or ditch any of these little "servers" without any effect on anyone else -- that's why they're so useful for RTOSs, because you can ditch what you don't need -- and even do so while the computer continues working. No reboots to fix a bug in your ethernet card driver...
What is a Microkernel? And what are it's advantages?
;-)
;-)
Glad you asked.
(Notice that part of this post isn't a direct answer to your question, although it may prove illustrative. But thanks for giving me an opportunity to rant on this
In Linux, the kernel does things like memory management, scheduling, writing to filesystems, to the network, to your sound card, to your video card... etc, etc. That's an awful lot to do. That's why Linux is such a big program.
Now for the sake of introduction, let's compare Linux to Mozilla. Mozilla lets you read and compose mail, browse the Web and compose Web sites. All in one application. As a result, you get a huge application, which takes quite some time to load. And if an error occurs in the mail component, you can say bye-bye to your 34 open Web browser windows as well -- it's one big program, so if one component crashes, the others go with it. Also, if you want to change anything in the code, you're required to recompile Mozilla completely just for that.
So maybe Mozilla would improve by getting split up in several components? Who knows. Fact is, that a kernel (like Linux) may as well improve by doing just that.
Imagine you booting up a system, which is still quite buggy, so your network card locks up every now and then. I actually have this with Linux on my Macintosh, and it can cause the complete system to lock up. In a Microkernel, the network card driver is a separate program, called a "server", running in "user space" (vs. "kernel space"), so it's merely an application like any other. If you have trouble with your network card, you could in theory simply restart the server.
So the advantage of this modular design is that your core is very small, and people can easily add/ delete/ modify its drivers. In fact, the main advantage of a Microkernel architecture is that it's a theoretically clean design. It looks good.
However, with even hardware drivers running in the very protected "user space", there must still be some way for the drivers to communicate with the hardware (and with each other). It is up to the Microkernel to intermediate for this. And here is the real problem. If you just write up a design for Microkernel System Server communication that looks good on paper, chances are that it turns out to be really slow when implementing it, because many data needs to be copied when transferred from a server to the kernel, and from there to user programs, etc.
The design of most older Microkernel interfaces was so high-level, that there was no easy way to get around this problem. Newer Microkernel designs however, recognize this problem at its core, and adapt their design, again at the core, to eliminate this problem. (The silly thing is that by this design, the newer Microkernels are usually even smaller than the older ones, if I am right.)
Darwin is based on Mach, which is a 1st generation microkernel. It uses a communication system called Ports, I believe not quite unlike TCP/ IP ports. All in all too clever for its own good, anyway: the Microkernel is responsible for caching messages (IIRC), which requires a lot of memory/ CPU resources.
Darwin (as well as MKLinux and the older NeXT/ Openstep systems), by the way, screw up Microkernel design at its core, by making just one big user space program with all drivers in it. These systems, politely referred to as single-server systems, only give the OS developers the advantage of not having to write the core of the OS (Mach) themselves. (Mach has a nice thread support I believe, so this might have been a good argument for choosing Mach.) There are no further immediate advantages for users or developers.
And there is of course the disadvantage of using a first-generation, slower, Microkernel as part of your design. (As you might have noticed, all of the abovementioned Mach-based single-server systems have a connection with Apple; I guess they Think Different, or something
Multi-server Microkernels, however, allow developers and (root) users to plug stuff in and out of their systems at runtime without having to change the kernel itself, and without having to fear crashes of drivers. The GNU HURD is a good example of a multi-server microkernel, but the HURD goes beyond everything named here, by redesigning the system so, that any (normal) user can easily adapt the Microkernel to its own needs. The advantages are somewhat beyond our current idea of computing: for example, imagine a normal user application installing a different algorithm for freeing up unused memory, because it is more efficient for this type of application. Maybe you never ever want to do this, but the HURD is designed to be this flexible.
The HURD is currently based on Mach, but there's a transition being made to L4 (the HURD is a quite abstract layer on top of a Microkernel). L4 is a highly esteemed second-generation Microkernel, which takes away the speed disadvantages of Mach.
Anyway, now for the real rant:
Any time a Slashdot story is posted on topic of the HURD, idiots flock together like pigeons to say Stallman is an idiot, and the HURD sucks because Microkernels are slow. While the real truth is that RMS doesn't seem to care about the HURD as a GNU project at all these days (he's currently developing emacs, I've heard -- could you imagine a sillier way to waste your precious time, being reffered to as the last real hacker on earth and all?), and there is nothing slow about L4, and nobody ever says bad things about QNX (a cool Microkernel-based OS) here anyway.
Slashdot readers only seem to recognize the advantages of Microkernel design, when not on the topic of the HURD, while the HURD design has advantages over most other Microkernels. This is plain silly.
Well, there's my rant. Bye now.
"We can confirm that Debian does *not* ship the version with the trojan horse. Our version predates it." [CA-2002-28]
RTOSes are slow, because they trade off speed for determinism. Also, most RTOSes are optimized for resource-starved embedded systems, so they can't fit or just don't care about many features that benefit desktops and servers. For example, QNX tends to have poor I/O performance because it only supports primitive filesystems and it lacks a unified page cache.
A popular book on the Space Shuttle talked about the flight control software: Rockwell (those hard-headed EE's) wanted to use a simple round-robin schedular (pretty much what cooperative does -- you are dependant on each task not being a hog) while IBM (which did the primary -- Rockwell got the backup) went with their fancy-schmanzy preemptive system, which I believe was blamed for scrubbing a Shuttle launch early in the program. You know, Keep It Simple and Stupid, and for some applications the dumb way is simple, reliable, high performance, and cost-effective.